ISNUMERIC()
fungsi di SQL Server memungkinkan Anda untuk memeriksa apakah ekspresi numerik atau tidak.
Namun, ada kalanya Anda mendapatkan hasil yang tidak Anda harapkan. Ini bisa terjadi jika Anda memiliki ekspresi yang berisi karakter yang bukan angka, tetapi masih diterima oleh ISNUMERIC()
sebagai numerik.
Ada banyak karakter yang ISNUMERIC()
menerima sebagai numerik yang mungkin tidak Anda pikirkan sebagai numerik. Ini termasuk karakter seperti plus (+
), dikurangi (-
), dan berbagai simbol mata uang. Juga, tergantung pada penempatannya, huruf e
juga dapat memungkinkan seluruh ekspresi untuk ditafsirkan sebagai numerik.
Contoh
Berikut adalah beberapa contoh dari apa yang saya maksud:
SELECT ISNUMERIC('+') AS [+], ISNUMERIC('-') AS [-], ISNUMERIC('$') AS [$], ISNUMERIC('1e2') AS [1e2], ISNUMERIC('1e+2') AS [1e+2], ISNUMERIC('e') AS [e], ISNUMERIC('e+') AS [e+];
Hasil:
+-----+-----+-----+-------+--------+-----+------+ | + | - | $ | 1e2 | 1e+2 | e | e+ | |-----+-----+-----+-------+--------+-----+------| | 1 | 1 | 1 | 1 | 1 | 0 | 0 | +-----+-----+-----+-------+--------+-----+------+
Perhatikan bahwa e
dan e+
mengembalikan hasil negatif ketika mereka sendiri, tetapi mengembalikan hasil positif ketika dikelilingi oleh angka.
Ini mungkin karena, dengan sendirinya, mereka tidak mewakili angka, tetapi ketika dikelilingi oleh angka, seluruh ekspresi dapat ditafsirkan sebagai notasi ilmiah (e
dan e+
sering digunakan dalam notasi ilmiah).
Tipe Data Numerik
Menurut dokumentasi Microsoft, tipe data yang ISNUMERIC()
akan mengenali sebagai numerik termasuk yang berikut.
Numerik Tepat
- besar
- dalam
- kecil
- kecil
- sedikit
Presisi Tetap
- desimal
- numerik
Perkiraan
- mengambang
- nyata
Nilai Moneter
- uang
- uang kecil
Selain itu, ISNUMERIC()
mengembalikan 1 untuk beberapa karakter yang bukan angka (seperti yang terlihat pada contoh di atas). Ini termasuk karakter seperti plus (+
), dikurangi (-
), dan simbol mata uang yang valid seperti tanda dolar ($
).
Juga, seperti yang terlihat pada contoh, huruf e
dapat mempengaruhi hasil ketika bagian dari ekspresi yang lebih besar, dan tergantung pada penempatannya dalam ekspresi itu.