SQL Server を使用した新しい Spring Boot プロジェクトがあり、古いプロジェクトのリポジトリ メソッドに対する MySQL ネイティブ クエリを SQL Server ネイティブ クエリに置き換える必要があります。これは、条件が case when 式である複雑なクエリです。 SQL Server Management Studio でクエリをテストしようとすると、次の図に示すようなエラーが表示されます。 ここに画像の説明を入力してください
これは、リポジトリ メソッドで MySQL を使用した古いネイティブ クエリであり、SQL Server に置き換えたいと考えています。 ここに画像の説明を入力してください 解決策を見つけるのを手伝ってください。 よろしくお願いします! !
P粉9041915072024-04-04 13:18:23
これがあなたが持っているものであり、質問にテキストとして投稿する必要があるものです。テキストとして、あなたを助けようとする誰かが検索したりコピーしたりすることができます。
リーリーCASE は TSQL の式です。これは、他の多くの言語のようなフロー制御構造ではありません。 「optional」フィルターを使用するには、CASE を使用して「optional」属性を正しく処理するブール式を構築する必要があります。通常、これは次のように CASE を使用してより高度に実行できます。 リーリー
したがって、ここでは CASE を使用して、比較でテストできる値を返します。 0 または 1 を使用することに魔法のようなものは何もありません。任意の型の任意の値を使用します。
クエリが実際にアプリケーション内で構築されることを考えると、クエリを動的に構築し、必要に応じてパラメータを追加することを検討する必要があります。これにより、データベース エンジンがより適切に最適化できる、より効率的なクエリが得られる可能性があります。あるいは、この
キッチン シンクのディスカッション と 動的検索条件 に関する Erland のディスカッションをチェックすることもできます。 TBH は、誰かが @num をパッチワークとして使用して、8 つの特定のフィルター値のパラメーターの追加を回避しているように見えます。販売者名と店舗名の両方をフィルタリングしたい場合、この方法は使用できません。