Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
针对文本数据类型的SQL Server XML查询_Sql_Sql Server_Xml - Fatal编程技术网

针对文本数据类型的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时,使用文本(可能会有更好的性能)是有意义的,这就是为什么适合使用强制转换。