sql >> Database >  >> RDS >> Sqlserver

SQL Server char- en nchar-kolommen zoeken anders

Uit de documentatie voor LIKE (Transact-SQL) :

Ik heb uw probleem gereproduceerd met de volgende tabel:

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

Resultaat:

(0 row(s) affected)

Als u echter NVARCHAR . gebruikt in plaats daarvan doet dit probleem zich niet voor:

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

Resultaten:

x
-----
nanaS

De originele tabel leverde echter niet de gewenste resultaten op, zelfs niet bij conversie naar NVARCHAR in de WHERE clausule:

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

Resultaat:

(0 row(s) affected)

Dus een mogelijke oplossing zou zijn om in de eerste plaats het juiste gegevenstype te gebruiken (en ook altijd Unicode-tekenreeksen N'properly' voor te zetten . Als u het gegevenstype niet correct kunt maken, kunt u de RTRIM() . gebruiken tijdelijke oplossing gepost door Aushin, maar houd ook rekening met de opmerkingen van HLGEM.



  1. SQL Server varBinary-gegevens converteren naar tekenreeks C#

  2. bulkgegevens importeren in MySQL

  3. Hoe verwijs ik naar de rij die ik zojuist in een MySQL-tabel had ingevoegd?

  4. PostgreSQL versus MySQL:wat is het beste?