SQL Server:当列为 NTEXT 时 IN ('asd') 不起作用

发布于 2024-11-07 05:43:05 字数 194 浏览 0 评论 0原文

我该如何解决这个问题?

where someNtext IN ('asd',asd1')

给出错误:

消息 402,16 级,状态 1,第 XXXXX 行
数据类型 ntext 和 varchar 在等于运算符中不兼容。

How can I fix this problem?

where someNtext IN ('asd',asd1')

gives an error:

Msg 402, Level 16, State 1, Line XXXXX
The data types ntext and varchar are incompatible in the equal to operator.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

新人笑 2024-11-14 05:43:05

IN 列表只是 OR 条件的简写。 LIKE 子句适用于 NTEXTTEXT 字段。因此,您可以结合这两个想法来做到这一点:

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

但是,正如 @marc_s 在问题评论中建议的那样, NVARCHAR(MAX) 是首选,因为所有字符串函数都可以使用它(并且TEXT、NTEXTIMAGE 数据类型已被弃用。您可以进行内联转换,例如:

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

但可能不如使用带有OR条件的LIKE子句来执行。

请注意:使用 NTEXT / NVARCHAR / NCHAR / XML 数据时,最好始终在字符串文字前加上大写“N”前缀。如果不这样做,可能会导致与数据库默认排序规则关联的代码页不支持的任何字符的数据丢失。

有关在 SQL Server 中一般使用排序规则/编码/Unicode/字符串的更多信息,请访问:https://Collat​​ions.Info /

An IN list is just short-hand for OR conditions. The LIKE clause works with NTEXT and TEXT fields. So, you can combine those two ideas to do this:

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

However, as @marc_s suggested in a comment on the Question, NVARCHAR(MAX) is preferred as all string functions work with it (and the TEXT, NTEXT, and IMAGE datatypes have been deprecated as of SQL Server 2005). You could do an inline convert such as:

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

but likely that would not perform as well as using the LIKE clause with OR conditions.

Please note: When working with NTEXT / NVARCHAR / NCHAR / XML data, it is best to always prefix string literals with an uppercase "N". Not doing so can result in data loss for any characters not supported by the code page associated with the default collation of the database.

For more information on working with collations / encodings / Unicode / strings in general in SQL Server, please visit: https://Collations.Info/

新雨望断虹 2024-11-14 05:43:05

来自http://msdn.microsoft.com/en-us/library/ms187993。 .aspx

ntext、text 和 image 数据类型将在 Microsoft SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用 nvarchar(max)、varchar(max) 和 varbinary(max)。

From http://msdn.microsoft.com/en-us/library/ms187993.aspx:

ntext, text, and image data types will be removed in a future version of Microsoft SQL Server. Avoid using these data types in new development work, and plan to modify applications that currently use them. Use nvarchar(max), varchar(max), and varbinary(max) instead.

冰葑 2024-11-14 05:43:05

NText 不具有可比性,如果需要比较,请不要使用它,请使用 nvarchar(MAX)

NText is not comparable, don't use it if you need compare use nvarchar(MAX)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文