当列是NTEXT时,SQL Server:IN('asd')不工作

Che*_*rot 2 t-sql sql-server sql-server-2005 in-operator sqldatatypes

我该如何解决这个问题?

where someNtext IN ('asd',asd1')
Run Code Online (Sandbox Code Playgroud)

给出错误:

数据类型ntext和nvarchar在等于运算符中不兼容.

Sol*_*zky 5

IN列表只是OR条件的简写.LIKE子句适用于NTEXT和TEXT字段.因此,您可以将这两个想法结合起来:

WHERE (
       someNtext LIKE N'asd'
OR     someNtext LIKE N'asd1'
      )
Run Code Online (Sandbox Code Playgroud)

但是,正如@marc_s在对问题的评论中所建议的那样,NVARCHAR(MAX)是首选,因为所有字符串函数都可以使用它(并且不推荐使用TEXT,NTEXT和IMAGE数据类型).您可以执行内联转换,例如:

WHERE CONVERT(NVARCHAR(MAX), someNtext) IN (N'asd', N'asd1')
Run Code Online (Sandbox Code Playgroud)

但可能不会像在OR条件下使用LIKE子句一样好.