当列是NTEXT时,SQL Server:IN('asd')不工作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当列是NTEXT时,SQL Server:IN('asd')不工作相关的知识,希望对你有一定的参考价值。
我该如何解决这个问题?
where someNtext IN ('asd',asd1')
给出错误:
Msg 402,Level 16,State 1,Line XXXXX 数据类型ntext和varchar在等于运算符中不兼容。
IN
列表只是OR条件的简写。 LIKE
条款适用于NTEXT
和TEXT
字段。因此,您可以将这两个想法结合起来:
WHERE (
someNtext LIKE N'asd'
OR someNtext LIKE N'asd1'
)
但是,正如@marc_s在对该问题的评论中所建议的那样,NVARCHAR(MAX)
是首选,因为所有字符串函数都可以使用它(并且自SQL Server 2005起,TEXT
,NTEXT
和IMAGE
数据类型已被弃用)。您可以执行内联转换,例如:
WHERE CONVERT(NVARCHAR(MAX), someNtext) IN (N'asd', N'asd1')
但可能不会像在LIKE
条件下使用OR
子句一样好。
请注意:使用NTEXT
/ NVARCHAR
/ NCHAR
/ XML
数据时,最好始终使用大写“N”作为字符串文字的前缀。不这样做会导致与数据库的默认排序规则关联的代码页不支持的任何字符的数据丢失。
有关在SQL Server中使用归类/编码/ Unicode /字符串的更多信息,请访问:https://Collations.Info/
来自http://msdn.microsoft.com/en-us/library/ms187993.aspx:
将来的Microsoft SQL Server版本中将删除ntext,text和image数据类型。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用nvarchar(max),varchar(max)和varbinary(max)。
NText是不可比的你拧,如果你需要比较使用nvarchar(MAX)不要使用它
以上是关于当列是NTEXT时,SQL Server:IN('asd')不工作的主要内容,如果未能解决你的问题,请参考以下文章
PySpark:当列是列表时,将列添加到 DataFrame
当列是现有列的布尔测试时,为啥向 Pandas DataFrame 添加列会返回 SettingWithCopy 警告?