sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server:IN ('asd') fungerar inte när kolumnen är NTEXT

En IN listan är bara en förkortning för OR-villkor. LIKE sats fungerar med NTEXT och TEXT fält. Så du kan kombinera dessa två idéer för att göra detta:

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

Men som @marc_s föreslog i en kommentar till frågan, NVARCHAR(MAX) är att föredra eftersom alla strängfunktioner fungerar med den (och TEXT , NTEXT och IMAGE datatyper har fasats ut från och med SQL Server 2005). Du kunde gör en inline-konvertering som:

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

men det skulle troligen inte fungera lika bra som att använda LIKE sats med OR villkor.

Observera: När du arbetar med NTEXT / NVARCHAR / NCHAR / XML data, är det bäst att alltid prefix sträng bokstaver med ett versaler "N". Om du inte gör det kan det leda till dataförlust för tecken som inte stöds av teckentabellen som är kopplad till standardsorteringen av databasen.

För mer information om att arbeta med sorteringar / kodningar / Unicode / strängar i allmänhet i SQL Server, besök:https://Collations. Info/



  1. Hur beräknar man ett glidande medelvärde i MySQL i en korrelerad delfråga?

  2. Ställa in DefaultDataPath och DefaultLogPath vid distribution i VS2010 Database Project

  3. Flera CTE i en enda fråga

  4. Laravel:Paginering av en fråga på en vy MySQL Error 1140 Mixing of GROUP-kolumner