「式<= 1」の違いは何ですか。そして「式<= 1」?


11

コードとケースステートメントのレビューexpression <= 1.は、<= 1

私はその目的が何であるかわかりません1.。何かご意見は?


3
SQL Serverは1.、ピリオドが原因で、リテラルを整数ではなくnumeric(1,0)として扱います。おそらく、それは式のデータ型と一致させるために指定されたものです(ベストプラクティス)。個人的には1.0、その場合に指定します。
Dan Guzman、2015

0小数点の後ろに何もないことと、decimalデータ型の優先順位がintそれよりも高いという事実は、必要に応じて定数をとにかく暗黙的にキャストするため、意図的なものではなく、タイプミスの可能性が高いと思います。
マーティン・スミス

回答:


18

1.NUMERIC(またはDECIMAL)定数1ですが、はINTEGER定数です。不必要な(または望ましくない)暗黙的な型変換を回避するために、定数のデータ型を明示的に指定すると便利な場合があります。

たとえば、

create table t(f1 int);
insert into t values (2);

次いで、select 1/f1 from tリターン0INTEGER)、一方、select 1./f1 from tリターン0.5DECIMAL)。

例の比較の左側にDECIMAL列があり、DECIMAL定数を明示的に指定すると、暗黙的な型キャストを回避してパフォーマンスをわずかに向上させることができると想定する人もいます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.