从nvarchar数据类型列中导出保存为xml格式的值

时间:2019-07-13 08:55:09

标签: sql-server

我想从保存为xml格式的0数据类型列中导出值。

Int32?列值如下:

nvarchar

我要从中导出nvarchar

谢谢

2 个答案:

答案 0 :(得分:3)

如果数据是XML,那么您实际上应该使用xml数据类型,那么这很简单。我在这里使用CONVERT,但您应该真正修复表中的数据类型。

CONVERT(xml, YourColumn).value('(TablePhoneHome/Number/@Num)[1]','int')

不过,就像我说的那样,确实应该更改表的列数据类型:

CREATE TABLE YourTable (YourColumn nvarchar(MAX));

INSERT INTO YourTable
VALUES('<TablePhoneHome><Number Num="1111"/></TablePhoneHome>');

ALTER TABLE YourTable ALTER COLUMN YourColumn xml;

SELECT YourColumn.value('(TablePhoneHome/Number/@Num)[1]','int') AS Num
FROM YourTable;

DB<>Fiddle

答案 1 :(得分:0)

如果所有值都是相同的xml格式,请与replace中的sql-server函数一起使用。 试试这个:

select  REPLACE(REPLACE('<TablePhoneHome><Number Num="1111"/></TablePhoneHome>','<TablePhoneHome><Number Num="' ,'') ,'"/></TablePhoneHome>','')