从SQL中的XML数据提取字段
我有一个问题,因为我以前从未这样做过 我有一个包含以下内容的SQL表:从SQL中的XML数据提取字段,sql,sql-server,xml,Sql,Sql Server,Xml,我有一个问题,因为我以前从未这样做过 我有一个包含以下内容的SQL表: ID int; xml_record xml; xml记录如下所示: <root xml:space="preserve" id="XXX"> <c1>Data1</c1> <c2>Data2</c2> <c3>Data3</c3> ... <cn>DataN</cn> </root> 问题可能来自“空
ID int;
xml_record xml;
xml记录如下所示:
<root xml:space="preserve" id="XXX">
<c1>Data1</c1>
<c2>Data2</c2>
<c3>Data3</c3>
...
<cn>DataN</cn>
</root>
问题可能来自“空间”,但不确定
SELECT
xml_record.value
( '(/root/c1/text())[1])',
'varchar(50)') as value_c1
FROM myTable
否则请删除第一行xml
否则请删除第一行xml
您只需修复表达式:
SELECT xml_record.value('(/root/c1)[1]','varchar(50)') AS value_c1
FROM ...
您只需修复表达式:
SELECT xml_record.value('(/root/c1)[1]','varchar(50)') AS value_c1
FROM ...
谢谢你,我会尽快的。但事实上,这张唱片是一条很大的线。我怎样才能去掉第一行?@HimanshuAhuja为什么在
//c1
之前将斜杠加倍?这将触发一个深度搜索,这在这里是不需要的。。。此外,你应该选择@Shnugo my bad实际上我从另一篇文章中引用了你的观点现在得到了你的观点/c1
将触发所有c1,正如你正确地说的深度搜索,并且没有意识到“text()
用于选择标记内的文本。谢谢你的帮助:)谢谢你,我会尽快尝试的。但事实上,这张唱片是一条很大的线。我怎样才能去掉第一行?@HimanshuAhuja为什么在//c1
之前将斜杠加倍?这将触发一个深度搜索,这在这里是不需要的。。。此外,你应该选择@Shnugo my bad实际上我从另一篇文章中引用了你的观点现在得到了你的观点/c1
将触发所有c1,正如你正确地说的深度搜索,并且没有意识到“text()
用于选择标记内的文本。感谢您的帮助:)XML支持非常特定于供应商-因此请添加一个标记以指定您是否正在使用mysql
,postgresql
,sql server
,oracle
或db2
-或其他完全不同的东西。XML支持是高度特定于供应商的-因此请添加一个标记,以指定您使用的是mysql
、postgresql
、sqlserver
、oracle
或db2
-还是其他完全不同的东西。