在SQL Server中转换XML
我有一个数据库表,其中有一些XML数据类型的数据 下面是该列中某些数据的示例在SQL Server中转换XML,sql,sql-server,xml,Sql,Sql Server,Xml,我有一个数据库表,其中有一些XML数据类型的数据 下面是该列中某些数据的示例 <locale en-US="Test & Data" /> 有没有办法只提取SQL server中的单词Test&Data。是否有任何内置功能。尝试类似的功能 如果您有一个XML变量: declare @xml XML = '<locale en-US="Test & Data" />'; select data.node.value('@en-US'
<locale en-US="Test & Data" />
有没有办法只提取SQL server中的单词Test&Data。是否有任何内置功能。尝试类似的功能 如果您有一个XML变量:
declare @xml XML = '<locale en-US="Test & Data" />';
select
data.node.value('@en-US', 'varchar(11)') my_column
from @xml.nodes('locale') data(node);
在您的情况下,对于表的列,很抱歉没有首先给出此示例:
create table dbo.example_xml
(
my_column XML not null
);
go
insert into dbo.example_xml
values('<locale en-US="Test & Data" />');
go
select
my_column.value('(/locale/@en-US)[1]', 'varchar(11)') [en-US]
from dbo.example_xml;
go
希望有帮助。请看一个名为:herein stack overflow的示例
IF OBJECT_ID('tempdb..#Holder') IS NOT NULL
begin
drop table #Holder
end
CREATE TABLE #Holder
(ID INT , MyXml xml )
/* simulate your insert */
INSERT INTO #HOLDER (ID , MyXml)
select 1 , '<locale en-US="Test & Data" />'
union all select 2 , '<locale en-US="Barney & Friends" />'
/* with other values in the table */
SELECT
holderAlias.ID ,
pre.value('(@en-US)[1]', 'Varchar(50)') AS 'ItemID'
FROM
#Holder holderAlias CROSS APPLY
MyXml.nodes('/locale') AS MyAlias(pre)
/* OR */
SELECT
[MyShreddedValue] = holderAlias.MyXml.value('(/locale/@en-US)[1]', 'varchar(50)')
FROM
#Holder holderAlias
IF OBJECT_ID('tempdb..#Holder') IS NOT NULL
begin
drop table #Holder
end
这是一个非常简单的例子:
SELECT
Configuracion.value('(/YourTag/Values)[1]', 'VARCHAR(255)')as columnName,
FROM yourTable
你逼我这么做他提到他有一个带有Xmldatatype列的表。这对于独立的xml是很好的…但不能解决列中的问题。我给您的提示和您的更正现在使我的答案不太可能被接受。这就是高速公路上的生活。哈哈。