これが適切でない場合はお詫びしますが、実際にはこれは「方法」ではなく「理由」です。それが適切かどうかはわかりませんが、質問するのに適した場所がわからず、探しているものを取得するためにグーグルを表現する方法を考えることができません。
IF 'hell' = 'freezing over'
BEGIN
SELECT log(0)
END
その声明を見てください。IF句が真になる世界はありません。それを実行しようとすると、SQLがIF句を飛び越えて、最後に移動することを期待しています。代わりに私は得る:
An invalid floating point operation occurred.
これは奇妙です。ですから、それがSQLのやり方だと思います。それ外...
IF 'hell' = 'freezing over'
BEGIN
SELECT 1/0
END
ここではエラーはありません。IF句のステートメントは、引き続きエラーを生成するはずです。なぜこれが起こらないのか誰かが説明できますか?
これは、EXP(SUM(LOG()))を使用してif句内にデータを蓄積するSQL計算の大規模なセットをデバッグしているときに発生しました。コードを変更して、それが再び発生しないようにすることはできますが、IF句内で満たされていないものを評価するのはなぜですか。
乾杯。
編集:追加の娯楽。キャッチしてみませんか?Pffft
IF 1=2
BEGIN
BEGIN TRY
SELECT SQRT(-1)
END TRY
BEGIN CATCH
END CATCH
END
非数学:
IF 1=2
BEGIN
SELECT SUBSTRING('hello',-1,-1)
END