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

CAST dan IsNumeric

IsNumeric mengembalikan 1 jika nilai varchar dapat dikonversi ke tipe angka APAPUN. Ini termasuk int, bigint, desimal, numerik, nyata &float.

Notasi ilmiah dapat menyebabkan masalah bagi Anda. Misalnya:

Declare @Temp Table(Data VarChar(20))

Insert Into @Temp Values(NULL)
Insert Into @Temp Values('1')
Insert Into @Temp Values('1e4')
Insert Into @Temp Values('Not a number')

Select Cast(Data as bigint)
From   @Temp
Where  IsNumeric(Data) = 1 And Data Is Not NULL

Ada trik yang bisa Anda gunakan dengan IsNumeric agar mengembalikan 0 untuk angka dengan notasi ilmiah. Anda dapat menerapkan trik serupa untuk mencegah nilai desimal.

IsNumeric(Kolom Anda + 'e0')

IsNumeric(Kolom Anda + '.0e0')

Cobalah.

SELECT CAST(myVarcharColumn AS bigint)
FROM myTable
WHERE IsNumeric(myVarcharColumn + '.0e0') = 1 AND myVarcharColumn IS NOT NULL
GROUP BY myVarcharColumn


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 9 Tips Terbaik untuk Menyiapkan Cluster SQL Server Anda

  2. Bagaimana cara menanyakan bidang DATETIME hanya menggunakan tanggal di Microsoft SQL Server?

  3. Kapan saya harus menggunakan variabel tabel vs tabel sementara di server sql?

  4. Otentikasi SQL Server vs. Otentikasi Windows:Yang mana yang digunakan dan kapan

  5. Cara Membuat Tampilan di SQL Server