Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Karakter Non-Angka yang Mengembalikan Positif saat menggunakan ISNUMERIC() di SQL Server

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Secara terprogram mengambil sumber prosedur tersimpan SQL Server yang identik dengan sumber yang dikembalikan oleh gui SQL Server Management Studio?

  2. Pertumbuhan Ukuran Database SQL Server menggunakan riwayat Cadangan

  3. Buat Fungsi Bernilai Tabel Sebaris (ITVF) di SQL Server

  4. sql cross join - apa gunanya ada yang menemukannya?

  5. Mengekspor data Di SQL Server sebagai INSERT INTO