declare @pid int
declare @mid int
declare @tableName varchar(10)
declare @query nvarchar(1000)
declare @subquery nvarchar(300)
set @pid = 1
set @mid = 2
set @query = 'Select * from '+@tableName+' where'
if(@pid is not null)
begin
set @query = @query+' pid ='+@pid+' and'
end
if(@mid is not null)
begin
set @query = @query+' mid ='+@mid+' and'
end
@pid と @mid が null でない場合は、クエリに追加されます。@pid と @mid が null の場合、クエリから「where」を削除したい。両方が選択された場合、「and」も同様です。
set @subquery = select right('''+@query+''',5)
if(@subquery = 'where')
begin
print @query
-- execute sp_executesql @query
end
if 句でそれらを比較することはできません。@subquery を実行する必要がありますか。はいの場合、その値をどのように取得しますか?