1

この質問のコメント:

短絡に依存しないでください...これらの句は、SQL Serverが適切と判断する順序で評価できます。

この答えに関連するように:

SELECT * FROM TABLE WHERE (@vari is null or col = @vari)
  1. これは正しいです?
  2. おそらくSQLフィドルで、この現象を再現できる良いテスト設定はありますか? (その用語はかなり大まかに使用されています)
  3. これは WHERE 句でのみ発生しますか? それとも AND/OR 演算子のみですか?

これを明示的に述べているものをオンラインで見つけられなかったので、私はこれを尋ねます.

4

1 に答える 1

1

ここを読む

http://connect.microsoft.com/SQLServer/feedback/details/537419/sql-server-should-not-raise-illogical-errors

SQLFiddle

サンプルセットアップ

create table albert(a int NOT NULL,
                        b varchar(23) NOT NULL)
create table stina (a int NOT NULL)
go
insert albert (a, b)
     values (1, '99'),
             (2, 'Gurka'),
             (3, '89')
insert stina (a) values(1), (3), (9), (12)
go

SELECT a.a, a.b + 100
FROM albert a
JOIN stina s ON s.a = a.a
于 2012-11-29T21:35:27.783 に答える