0

@myvar は nvarchar(30) です。OR を使用せずに次の評価を行うにはどうすればよいですか?

@myvar = '' OR (table1.col1 like @myvar)

より効率的な他の方法はありますか?

4

4 に答える 4

1

他の方法もありますが、実際にはたくさんあります。ただし、OPTION(RECOMPILE)を追加すると、使用しているフォームはSQLServer2005以降のほとんどのバージョンで最高のパフォーマンスを発揮します。

動的条件で検索するための決定的なガイドについては、こちらをご覧ください。ご使用のバージョンのSQLServerのリンクをたどってください。

于 2012-10-04T23:28:14.460 に答える
1
table1.col1 like ISNULL(NULLIF(@myvar, ''), table1.col1)
于 2012-10-04T23:58:31.943 に答える
1

どうですか:

(table1.col1 like ISNULL(@myvar,table1.col1))
于 2012-10-04T22:58:16.503 に答える
1

OR禁止されていて、ド・モルガンの法則が忘れられているインタビューの質問がある場合は、次のように使用できます。

case
  when @myvar = '' then 42
  when table1.col1 like @myvar then 666
  else 0 end > 0

で実験することもできLen( @myvar ) = 0ます。

于 2012-10-05T00:29:52.793 に答える