誰かがこれを説明できますか?理論的には両方とも同じクエリですが、答えは異なります。
a)
declare @date varchar(10)
set date = '03/02/2013'
select count(*) from table1 where (from <= @date) and (@date <= to)
b)
declare @date varchar(10)
set date = '03/02/2013'
set @sqlstring = 'select count(*) from table1 where (from <= ' + @date + ') and (' + @date + ' <= to)'
exec sp_executeSql @sqlstring
最初の文のセットは結果として「2」を返し、これは正解ですが、2番目の文のセットでは、同じクエリが文字列を介して動的に実行されますが、答えは「0」です。