
例えば、あらかじめテーブルなどを読み、その内容により、
SQLの文そのものを非常に変えたいとします。
SQLその1
select * from TABLEA
where A = 1
SQLその2
select * from TABLEA
where A = 1 and B = 2 and C = 3 and D = 4
上記は例ですが、内容などにより複雑な条件式を追加したい。
ベースのSQLは非常に長い為、
例えば 完全に切り分けるのでは無く、共通の部分は共通ソースとしたい。
また、プリプロセッサみたいに、条件式が追加された場合
あたかも、初めからそのSQLのみがあり、他の制御文などをSQL文自身には追加したくない。
動的SQLでは無い方法でそのような事が可能でしょうか?
----- イメージ -----
select * from TABLEA
where A = 1
IF (条件がある時のみ)
B = 2 and C = 3 and D = 4
END IF;
-------------------
実際には、SQL文の中にPLSQLの制御文をうまく追加できない。
No.1ベストアンサー
- 回答日時:
こんにちわ。
> 動的SQLでは無い方法でそのような事が可能でしょうか?
decode を使えば可能かもです。
例えば、v1, v2, v3 と言う数値型変数にそれぞれ列B, 列C, 列Dに
対する検索値が格納されていて、値が-1 だった場合に、検索条件を
無効化する場合、以下のようなSQL で実現できます。
select * from tablea
where a=1 and b=decode(v1, -1, b, v1) and
c=decode(v2, -1, c, v2) and
d=decode(v3, -1, d, v3);
こうすると、例えばv1変数に-1 が設定されている時の検索条件は
「b=b」となり常に真となるので、実質検索条件を指定していない
場合と同じ事になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- Access(アクセス) Access VBAで条件を追加する(書き込む)場所 2 2022/03/23 12:05
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Oracle sqlのwhere句で下記の条件にしたい場合どうなるでしょうか。 システム日付が開始日以上、終了日以 2 2022/03/25 21:22
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MERGE文について
-
[SQL]重複内容を持つデータから...
-
shellからストアドプロシージャ...
-
”パラメータ値を TextBox から ...
-
ストアドプロシージャでのパラ...
-
SQLでlike検索条件を副問い合わ...
-
[エクセル]連続する指定範囲か...
-
テキストボックスのvalueとtext...
-
エクセルvbaで、別シートの最下...
-
Accessのクエリで、replace関数...
-
表にフィルターをかけ、絞った...
-
エクセルで、絶対値の平均を算...
-
VB.NETで DataRow()を利用して...
-
”戻り値”が変化したときに、マ...
-
count(*)で取得した値をJAVAの...
-
ExcelVBAを使って、値...
-
i=cells(Rows.Count, 1)とi=cel...
-
特定のセルが空白だったら、そ...
-
Excelで指定した日付から過去の...
-
特定行の色を変えたい(FlexGrid)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
”パラメータ値を TextBox から ...
-
MERGE文について
-
[SQL]重複内容を持つデータから...
-
SQLでlike検索条件を副問い合わ...
-
PLSQLで条件によりSQLを動的に...
-
shellからストアドプロシージャ...
-
Exp.exeに指定するparfileパラ...
-
select文でゴミデータを検索し...
-
ストアドプロシージャでのパラ...
-
ビュー(インラインビュー)で...
-
条件で取得列を分ける事は可能?
-
SQL文 教えて下さい。
-
列の桁数変更の方法 (oracle 8i)
-
UPDATE文の書き方を教えて下さい。
-
SQL構文を手助けしてください
-
プロシージャーに動的にパラメ...
-
バッチからのSQLPlusの実行につ...
-
oracleの表の各列に対して、
-
ExcelVBAを使って、値...
-
i=cells(Rows.Count, 1)とi=cel...
おすすめ情報