针对文本数据类型的SQL Server XML查询
我有一个针对文本数据类型的SQL Server XML查询,sql,sql-server,xml,Sql,Sql Server,Xml,我有一个ntext数据类型列,其中包含XML内容,如下所示: CREATE TABLE [dbo].[SampleTable]( [SampleId] [bigint] NOT NULL, [XMLContent] [ntext] NOT NULL, CONSTRAINT [PK_SampleTable] PRIMARY KEY CLUSTERED ( [SampleId] ASC ) ) 我可以对SQL Server中的Ntext列运
ntext
数据类型列,其中包含XML内容,如下所示:
CREATE TABLE [dbo].[SampleTable](
[SampleId] [bigint] NOT NULL,
[XMLContent] [ntext] NOT NULL,
CONSTRAINT [PK_SampleTable] PRIMARY KEY CLUSTERED
(
[SampleId] ASC
)
)
我可以对SQL Server中的Ntext
列运行XML查询吗
到目前为止,我可以使用like查询解决问题,但希望使用更好的方法。不,您不能。为了使用XQuery,您必须使用
XML
数据类型
如果该列确实只包含XML,那么是什么阻止您将其更改为XML
(实际上,这应该放在第一位)
如果您不能更改它(同样:为什么不!?!),那么您需要为每个操作强制转换(XMLContent为XML):
SELECT
CAST(XMLContent AS XML).value('.....', '..')
等等,这不是一个非常有用的方法
此外:
TEXT
和NTEXT
已被弃用,不应再使用-请使用更合适的数据类型,如XML
或(N)VARCHAR(MAX)
,XML查询是什么意思,如果您谈论的是XQUERY或其他类似的查询语言,我猜简单的答案是否定的。就像针对xml数据类型的查询一样,SQL server只会将保存在列中的数据视为纯文本。您需要将其解析为XML,然后进行查询,好的。请将列的数据类型更改为XML。@marc_s您的注释不符合回答条件吗?您知道有些情况下您不是数据库的所有者,其他情况下,运行时查询只需要文本。因此,当一些报告查询需要xml时,使用文本(可能会有更好的性能)是有意义的,这就是为什么适合使用强制转换。