3

vbのような「OR」比較作業です。彼がそれぞれをチェックするか、最初のものが間違っているかを意味します

お気に入り

DECLARE @var1 bit;
SET @var1=1
DECLARE @var2 bit;
SET @var2=1

(@var1=1 or @var2=1)
AND ...

したがって、@var は 1 に等しいので、var2 をチェックする必要はありませんが、SQL サーバーはチェックを行いますか?

クエリ(およびサーバーのメモリ)の最適化について

タンクあなた

4

2 に答える 2

2

ほとんどの場合、はい、SQL Server は AND および OR ステートメントにショートサーキットを使用しますが、操作が予期した順序で行われないことがあります。これは、次の方法で簡単にテストできます。

SELECT '"Divide By Zero" error' AS [test] WHERE (1 / 0 = 1)

SELECT 'NO "Divide By Zero" error' AS [test] WHERE (1 = 1) OR (1 / 0 = 1)

Gianluca Sartori による詳細な分析については、http ://www.sqlservercentral.com/articles/T-SQL/71950/ を参照してください。

于 2012-04-22T05:33:42.967 に答える
0

Microsoft Connectから:

ご意見をいただきありがとうございます。現在 SQL Server でサポートされている論理演算子は、ANSI SQL 標準で指定され、ほぼすべてのデータベース システムでサポートされているものです。型にはまらない論理演算子をサポートするために拡張する予定はありません。式を条件付きで評価する場合は、代わりに SQL Server で次のように CASE 式を使用します。

どこの場合 そのとき (選択 1 どこ ) いつ それから (選択 2 どこ ) ... end = 1

CASE 式は、WHEN/THEN 句が順番に評価されることを保証します。

于 2012-04-20T03:21:12.627 に答える