@myvar は nvarchar(30) です。OR を使用せずに次の評価を行うにはどうすればよいですか?
@myvar = '' OR (table1.col1 like @myvar)
より効率的な他の方法はありますか?
@myvar は nvarchar(30) です。OR を使用せずに次の評価を行うにはどうすればよいですか?
@myvar = '' OR (table1.col1 like @myvar)
より効率的な他の方法はありますか?
他の方法もありますが、実際にはたくさんあります。ただし、OPTION(RECOMPILE)を追加すると、使用しているフォームはSQLServer2005以降のほとんどのバージョンで最高のパフォーマンスを発揮します。
動的条件で検索するための決定的なガイドについては、こちらをご覧ください。ご使用のバージョンのSQLServerのリンクをたどってください。
table1.col1 like ISNULL(NULLIF(@myvar, ''), table1.col1)
どうですか:
(table1.col1 like ISNULL(@myvar,table1.col1))
OR
禁止されていて、ド・モルガンの法則が忘れられているインタビューの質問がある場合は、次のように使用できます。
case
when @myvar = '' then 42
when table1.col1 like @myvar then 666
else 0 end > 0
で実験することもできLen( @myvar ) = 0
ます。