Apa perbedaan antara “ekspresi <= 1.” dan “ekspresi <= 1”?


11

Meninjau kode dan pernyataan kasus telah expression <= 1.bertentangan<= 1

Saya tidak yakin apa tujuannya 1.. Adakah pikiran?


3
SQL Server memperlakukan 1.literal sebagai numerik (1,0), bukan bilangan bulat karena periode. Mungkin itu ditentukan untuk mencocokkan tipe data dari ekspresi (praktik terbaik). Secara pribadi, saya akan menentukan 1.0dalam kasus itu.
Dan Guzman

Kurangnya 0setelah titik desimal dan fakta yang decimalmemiliki prioritas lebih tinggi dari datatype daripada intsehingga konstanta akan secara implisit dilemparkan pula jika diperlukan akan membuat saya berpikir bahwa itu kemungkinan kesalahan pengetikan daripada sengaja.
Martin Smith

Jawaban:


18

1.adalah NUMERIC(atau DECIMAL) konstan, sedangkan 1adalah INTEGERkonstan. Dalam beberapa kasus, berguna untuk menentukan tipe data konstanta secara eksplisit untuk menghindari konversi tipe implisit yang tidak perlu (atau tidak diinginkan).

Pertimbangkan, misalnya

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

Kemudian select 1/f1 from tmengembalikan 0( INTEGER), sementara select 1./f1 from tmengembalikan 0.5( DECIMAL).

Orang mungkin berasumsi bahwa di sisi kiri perbandingan dalam contoh Anda ada DECIMALkolom, dan secara eksplisit menentukan DECIMALkonstanta secara marginal dapat meningkatkan kinerja dengan menghindari tipe gips implisit.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.