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

SQL Server:IN ('asd') virker ikke, når kolonnen er NTEXT

En IN listen er kun en forkortelse for OR-betingelser. LIKE klausul fungerer med NTEXT og TEXT felter. Så du kan kombinere disse to ideer for at gøre dette:

WHERE (
       someNtext LIKE N'asd'
OR     someNtext LIKE N'asd1'
      )

Men som @marc_s foreslog i en kommentar til spørgsmålet, NVARCHAR(MAX) foretrækkes, da alle strengfunktioner arbejder med den (og TEXT , NTEXT og IMAGE datatyper er blevet forældet fra og med SQL Server 2005). Du kunne lav en inline-konvertering såsom:

WHERE CONVERT(NVARCHAR(MAX), someNtext) IN (N'asd', N'asd1')

men det ville sandsynligvis ikke fungere så godt som at bruge LIKE klausul med OR betingelser.

Bemærk venligst: Når du arbejder med NTEXT / NVARCHAR / NCHAR / XML data, er det bedst at altid præfiks streng bogstaver med et stort "N". Hvis du ikke gør det, kan det resultere i datatab for tegn, der ikke understøttes af tegntabel, der er knyttet til standardsorteringen af ​​databasen.

For mere information om at arbejde med kollationer / kodninger / Unicode / strenge generelt i SQL Server, besøg venligst:https://Collations. Info/



  1. Sådan tilføjes tid til DateTime i SQL

  2. indsæt flere rækker ved hjælp af en forigenk-værdi i form

  3. Hvordan forhindrer man fejl med datotidsværdi uden for området?

  4. SQL-nøgler, MUL vs PRI vs UNI