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

SQL Server char dan kolom nchar mencari secara berbeda

Dari dokumentasi untuk LIKE (Transact-SQL) :

Saya mereproduksi masalah Anda dengan tabel berikut:

DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';

Hasil:

(0 row(s) affected)

Namun jika Anda menggunakan NVARCHAR sebaliknya, masalah ini tidak terjadi:

DECLARE @t TABLE(x NVARCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';

Hasil:

x
-----
nanaS

Namun tabel asli tidak menghasilkan hasil yang diinginkan bahkan jika mengonversi ke NVARCHAR di WHERE klausa:

DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE CONVERT(NVARCHAR(25),x) LIKE N'%S';

Hasil:

(0 row(s) affected)

Jadi satu solusi potensial adalah menggunakan tipe data yang tepat sejak awal (dan juga selalu mengawali string Unicode N'properly' . Jika Anda tidak dapat membuat tipe data yang benar, Anda dapat menggunakan RTRIM() solusi yang diposting oleh Aushin, tetapi ingat juga komentar HLGEM.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jatuhkan tabel, lalu tidak dapat membuat ulang tabel dengan nama yang sama

  2. Cara membuat alias database di SQL Server

  3. SQL Server 2008 Spatial:temukan titik dalam poligon

  4. Menjalankan total dalam tampilan SQL

  5. Menghitung nilai menggunakan nilai baris sebelumnya di T-SQL