
<環境>sqlserver
SQLでパラメータが空白であれば全件取得、パラメータに値が設定されている場合には
条件にHITするデータを抽出したいのですが、一本のクエリで抽出することができるのでしょうか?
空白時パラメータは以下のとおり入ってきます。
@no=""…完全一致
@name="%%"…部分一致
例)
SELECT *
FROM テーブル
WHERE
(NO = @no)
and ((@name IS NULL) OR (@name IS NOT NULL) AND (NAME LIKE @name))
NAMEは上記クエリにて取得できています。
NOのところはどのようにすればよいでしょうか?
No.3
- 回答日時:
Case文を使うととりあえず対応は可能かと…。
No=Case @no is null then No else @no end
この回答への補足
SELECT *
FROM テーブル
WHERE
([NO] = CASE @no IS NULL THEN [NO] ELSE @no END)
AND
((@name IS NULL) OR (@name IS NOT NULL) AND ([NAME] LIKE @name))
でエラーとなります。何度もすみませんが添削お願いします。
No.2
- 回答日時:
>完全一致は仕様のため変更できないのです
とありますが、たとえばNOが5ケタ固定長の場合
WHERE NO LIKE '12345%'
と
WHERE NO = '12345'
は変わらない結果が得られると思いますが。
>テーブルを作成
他には空白時とそうでない場合でsqlcommandを
PGで切り替えるとかでしょうか。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
sql文のwhere句について
-
SQL xx件目からxx件目まで...
-
検索対象のデータが「複数レコ...
-
ビュー情報(user_views)の参...
-
Oracle 11g コミットのタイミン...
-
差し込み後、元データを変更し...
-
SQLで特定の項目の重複のみを排...
-
フィルターかけた後、重複を除...
-
外部参照してるキーを主キーに...
-
エクセルで最後の文字だけ置き...
-
誰か教えてください
-
SELECT 文 GROUP での1件目を...
-
Outlook 送受信エラー
-
1、Rstudioで回帰直線を求める...
-
VIEWの元のテーブルのindexって...
-
access2021 VBA メソッドまたは...
-
カーソル0件の時にエラーを発生...
-
1日に1人がこなせるプログラム...
-
エクセルの関数について教えて...
-
EXISTSを使ったDELETE文
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ビュー情報(user_views)の参...
-
OR と IN の違い
-
階層問い合わせで重複レコード...
-
DBから新しいものを30個取得...
-
抽出したデータの結合
-
コンパイルエラーが出ます。助...
-
sqlのテーブル名省略について
-
PHP SQL 問合せについて
-
検索対象のデータが「複数レコ...
-
SQL文について
-
最新から100行のSELECT文
-
sql文のwhere句について
-
Oracleのエラースタックトレー...
-
SQLの書き方について教えてくだ...
-
PL/SQL デバック方法:入力を受...
-
重複レコードの抽出について
-
SQL集計について
-
大文字/小文字の区別しないで検...
-
重複レコードのある項目を比較...
-
テストデータを作成したい
おすすめ情報