Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server:IN ('asd') não funciona quando a coluna é NTEXT


Um IN list é apenas uma abreviação para condições OR. O LIKE cláusula funciona com NTEXT e TEXT Campos. Então, você pode combinar essas duas ideias para fazer isso:
WHERE (
       someNtext LIKE N'asd'
OR     someNtext LIKE N'asd1'
      )

No entanto, como @marc_s sugeriu em um comentário na pergunta, NVARCHAR(MAX) é o preferido, pois todas as funções de string funcionam com ele (e o TEXT , NTEXT e IMAGE tipos de dados foram preteridos a partir do SQL Server 2005). Você poderia faça uma conversão inline como:
WHERE CONVERT(NVARCHAR(MAX), someNtext) IN (N'asd', N'asd1')

mas provavelmente isso não funcionaria tão bem quanto usar o LIKE cláusula com OR condições.

Observação: Ao trabalhar com NTEXT / NVARCHAR / NCHAR / XML dados, é melhor sempre literais de string de prefixo com um "N" maiúsculo. Não fazer isso pode resultar em perda de dados para quaisquer caracteres não suportados pela página de código associada ao agrupamento padrão do banco de dados.

Para obter mais informações sobre como trabalhar com agrupamentos / codificações / Unicode / strings em geral no SQL Server, visite:https://Collations. Informações/