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

tidak dapat memberikan nilai sebagai float

Mengenai setelah pemikiran Anda.

SQL Server 2012 memperkenalkan TRY_CONVERT untuk kebutuhan ini. Jadi kueri berikut akan mengembalikan NULL daripada sebuah kesalahan.

SELECT TRY_CONVERT ( FLOAT, 'Fish')

Tidak ada jaminan bahkan dengan paket serial bahwa WHERE klausa akan terjadi sebelum SELECT dievaluasi. Seperti yang dijelaskan dalam entri blog ini dari SQL Server 2005 dan seterusnya ini lebih mungkin terjadi daripada di versi sebelumnya. Perubahan Perilaku pada Fitur Database Engine di SQL Server 2005 secara khusus menyebutnya sebagai berikut.

Diskusi lebih lanjut tentang perilaku ini ada di posting blog bagus lainnya oleh Craig Freedman Kesalahan Konversi dan Aritmatika .

Pada versi sebelum 2012 dan TRY_CONVERT anda perlu membungkus CAST AS FLOAT dalam CASE penyataan. misalnya

  SELECT CASE WHEN ISNUMERIC(Col)=1 THEN CAST(Col AS FLOAT) END AS Col
  FROM Table
  WHERE ISNUMERIC(Col)=1

Ini masih belum sepenuhnya dijamin untuk mencegah Anda mendapatkan kesalahan sebagai ISNUMERIC sendiri hanya memeriksa bahwa nilainya akan dilemparkan ke salah satu tipe data numerik daripada secara khusus ke float Contoh input yang akan gagal adalah '.'

CASE didokumentasikan untuk sebagian besar korsleting dalam buku online (beberapa pengecualian dibahas di sini )

Anda juga dapat menemukan diskusi/keluhan tambahan tentang hal ini di item koneksi SQL Server tidak boleh memunculkan kesalahan tidak logis dan penjelasan yang bagus tentang masalah serupa oleh SQLKiwi



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan kembali SqlCommand?

  2. sql server:hapus semua baris semua tabel

  3. PHP 5.3 tidak mengenali Native Client untuk terhubung ke MS SQL

  4. Menjalankan Paket SSIS yang sama dengan parameter yang berbeda pada waktu yang berbeda

  5. Basis data tidak dapat dibuka karena versi 851. Server ini mendukung versi 782 dan sebelumnya. Jalur penurunan versi tidak didukung