在SQL Server中转换XML

在SQL Server中转换XML,sql,sql-server,xml,Sql,Sql Server,Xml,我有一个数据库表,其中有一些XML数据类型的数据 下面是该列中某些数据的示例 <locale en-US="Test &amp; Data" /> 有没有办法只提取SQL server中的单词Test&Data。是否有任何内置功能。尝试类似的功能 如果您有一个XML变量: declare @xml XML = '<locale en-US="Test &amp; Data" />'; select data.node.value('@en-US'

我有一个数据库表,其中有一些XML数据类型的数据

下面是该列中某些数据的示例

<locale en-US="Test &amp; Data" />

有没有办法只提取SQL server中的单词Test&Data。是否有任何内置功能。

尝试类似的功能

如果您有一个XML变量:

declare @xml XML = '<locale en-US="Test &amp; 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 &amp; 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 &amp; Data" />' 
union all select 2 , '<locale en-US="Barney &amp; 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是很好的…但不能解决列中的问题。我给您的提示和您的更正现在使我的答案不太可能被接受。这就是高速公路上的生活。哈哈。