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

Apa literal Karakter Null di TSQL?

Ada dua perilaku berbeda dalam jawaban Cade Roux:penggantian berhasil (ketika pemeriksaan SQL digunakan) dan tidak berhasil (pengumpulan Windows digunakan). Alasannya adalah jenis susunan yang digunakan.

Perilaku ini dikirimkan ke Microsoft hampir 4 tahun yang lalu:

T: Saat mencoba mengganti karakter NUL dengan replace(), ini berfungsi adalah nilainya memiliki susunan SQL, tetapi bukan susunan Windows.

J: Hal ini disebabkan oleh fakta bahwa 0x0000adalah karakter yang tidak ditentukan dalam Windowscollations. Semua karakter yang tidak ditentukan diabaikan selama perbandingan, pengurutan, dan pencocokan pola. Jadi searing for'a' + char(0) benar-benar mencari'a', dan mencari char(0) sama dengan string kosong.

Cara menangani karakter yang tidak ditentukan agak membingungkan, tetapi ini adalah cara yang ditentukan Windows untuk mengurutkannya, dan SQL Server sesuai dengan API Windows umum.

Dalam susunan SQL, tidak ada gagasan tentang karakter yang tidak ditentukan. Setiap titik kode diberi bobot, itulah sebabnya kami tidak melihat masalah di sana.

tapi sayangnya, masih belum terdokumentasi.

Jadi, tampaknya satu-satunya solusi adalah mengubah susunan ke susunan SQL (mis. SQL_Latin1_General_CP1_CI_AS dapat digunakan juga).

Saya menghapus jawaban saya sebelumnya karena tidak perlu



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengkodean karakter default SQL Server

  2. Perbarui Data melalui Fungsi Bernilai Tabel di SQL Server

  3. Generator data untuk server SQL?

  4. Melewati array ke Prosedur Tersimpan SQL Server

  5. Memilih Prosesor untuk SQL Server 2014 – Bagian 2