SSMS
 sql >> Teknologi Basis Data >  >> Database Tools >> SSMS

SQL Server ISNUMERIC() Klarifikasi

Anda harus menggunakan CAST() atau TRY_CAST() sebagai gantinya:

declare @test nvarchar(8) = '12345678'
select cast(@test as bigint) -- errors on failure
select try_cast(@test as bigint) -- returns null on failure

Juga, penting untuk menunjukkan ISNUMERIC() tidak sempurna. Dari dokumen :

ISNUMERIC mengembalikan 1 untuk beberapa karakter yang bukan angka, seperti plus (+), minus (-), dan simbol mata uang yang valid seperti tanda dolar ($). Untuk daftar lengkap simbol mata uang, lihat uang dan uang kecil (Transact-SQL).

Untuk alasan ini saya tidak berpikir pemeriksaan logis adalah nilai di sini. Sebaiknya gunakan TRY_CAST() pada semua nilai, terlepas dari keberadaan karakter dan menangani respons nol dengan cara yang dapat diprediksi.



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. ROW_NUMBER() dalam tampilan di SQL Server 2005

  2. Parameter berfungsi di SSMS tetapi tidak SSRS

  3. Lacak perubahan dalam database Microsoft SQL Server

  4. Di mana saya dapat memeriksa jenis tabel yang ditentukan pengguna di SQL Server 2008 di SSMS? dan bagaimana saya bisa memasukkan kolom baru ke dalamnya?

  5. Bagaimana cara menyegarkan cache intellisense SQL Server Management Studio secara otomatis?