sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server char og nchar kolonner søger forskelligt

Fra dokumentationen til LIKE (Transact-SQL) :

Jeg gengav dit problem med følgende tabel:

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

Resultat:

(0 række(r) påvirket) 

Men hvis du bruger NVARCHAR i stedet opstår dette problem ikke:

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

Resultater:

x-----nanaS 

Den originale tabel gav dog ikke de ønskede resultater, selvom der blev konverteret til NVARCHAR i WHERE klausul:

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

Resultat:

(0 række(r) påvirket) 

Så en mulig løsning ville være at bruge den rigtige datatype i første omgang (og også altid præfikset Unicode-strenge N'korrekt' . Hvis du ikke kan gøre datatypen korrekt, kan du bruge RTRIM() løsning indsendt af Aushin, men husk også HLGEMs kommentarer.



  1. Sammenføj to tabeller, brug kun den seneste værdi af højre tabel

  2. Foretag nogle beregninger af værdierne i to tabel og gem det i tredje tabel mysql

  3. Tip HINT_PASS_DISTINCT_THROUGH reducerer mængden af ​​entiteter, der returneres pr. side for en PageRequest, ned til under den konfigurerede sidestørrelse (PostgreSQL)

  4. Indstilling af Identitet til til eller fra i SQL-server