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

Cara menentukan nilai bidang yang tidak dapat dikonversi ke (desimal, float, int) di SQL Server

ISNUMERIC biasa adalah sampah

  • String kosong, + , - dan . semuanya valid
  • Begitu juga +. dll
  • 1e-3 valid untuk float tapi bukan desimal (kecuali jika Anda CAST ke float lalu ke desimal)

Untuk solusi yang sangat samar namun gagal aman, tambahkan e0 atau .0e0 lalu gunakan ISNUMERIK

SELECT
   ISNUMERIC(MyCOl + 'e0')   --decimal check,
   ISNUMERIC(MyCOl + '.0e0')  --integer check

Jadi

SELECT
    ID, VALUE,
    CAST(
          CASE WHEN ISNUMERIC(VALUE + 'e0') = 1 THEN VALUE ELSE NULL END
          AS decimal(38, 10)
        ) AS ConvertedVALUE
FROM
    Mytable



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Query untuk menemukan hari terakhir bulan ini

  2. Bagaimana cara menghapus aksen dan semua karakter <> a..z di sql-server?

  3. 3 Cara untuk Mengetahui apakah Kolom adalah Kolom yang Dihitung di SQL Server

  4. Cara Mengganti Nama Kolom atau Nama Tabel di SQL Server - Tutorial SQL Server / T-SQL Part 36

  5. SQL Server PILIH TERAKHIR N Baris