🏃♂️
SQLServerでの動的クエリーの書き方
備忘録として、SQLServerでの動的クエリーの書き方です。
シンプルなクエリー
シンプルな動的クエリー
use[SAMPLE]
declare @sql nvarchar(max)
set @sql = '
select
SampleId as ID,
SampleName as 名前,
from
SampleTable '
exec (@sql)
任意のSELECT条件に応じてクエリーを結合する
動的クエリーを操作する
use[SAMPLE]
declare @sql nvarchar(max)
declare @Terminal nvarchar(50)
declare @OperationName nvarchar(50)
declare @RegistDatetimeFrom nvarchar(max)
declare @RegistDatetimeTo nvarchar(max)
-- ↓↓↓↓↓↓↓任意のSELECT条件を設定する↓↓↓↓↓↓↓
set @Terminal = ''
set @OperationName = ''
set @RegistDatetimeFrom = ''
set @RegistDatetimeTo = ''
-- ↑↑↑↑↑↑↑任意のSELECT条件を設定する↑↑↑↑↑↑↑
set @sql = '
select
SampleId as ID,
SampleName as 名前,
from
SampleTable
where
1 = 1'
-- ↓↓↓↓↓↓↓条件に応じてクエリーを結合していく↓↓↓↓↓↓↓
if @Terminal <> ''
begin
set @sql += N' and Terminal = ''' + @Terminal + ''''
end
if @OperationName <> ''
begin
set @sql += N' and OperationName = ''' + @OperationName + ''''
end
if @RegistDatetimeFrom <> ''
begin
set @sql += N' and RregistDatetime >= convert(datetime, ''' + @RegistDatetimeFrom + ''')'
end
if @RegistDatetimeTo <> ''
begin
set @sql += N' and RregistDatetime <= convert(datetime, ''' + @RegistDatetimeTo + ''')'
end
-- ↑↑↑↑↑↑↑条件に応じてクエリーを結合していく↑↑↑↑↑↑↑
exec (@sql)
このようにして、動的クエリーを作成・操作することができます。
また、実行された動的クエリーを確認したい場合は、動的クエリーを設定した変数をselectしてあげればOKです。
実行された動的クエリーの確認
exec (@sql)
select @sql as 実行クエリー
Discussion