Sql 如何使用forxml子句从xmlstring读取列值
在我们的数据库表中,列存储为xml字符串,如下所示Sql 如何使用forxml子句从xmlstring读取列值,sql,xml,for-xml,Sql,Xml,For Xml,在我们的数据库表中,列存储为xml字符串,如下所示 <DocumentElement> <PartInfo> <ID>0</ID> <PartNo>0</PartNo> <SerialNo>1</SerialNo> <Parameter>0</Parameter> <InstalledDate>2013-01-15T00:
<DocumentElement>
<PartInfo>
<ID>0</ID>
<PartNo>0</PartNo>
<SerialNo>1</SerialNo>
<Parameter>0</Parameter>
<InstalledDate>2013-01-15T00:00:00+05:30</InstalledDate>
<InstalledTill>2013-01-25T00:00:00+05:30</InstalledTill>
</PartInfo>
</DocumentElement>
0
0
1.
0
2013-01-15T00:00:00+05:30
2013-01-25T00:00:00+05:30
我想得到这个字符串的列值。例如,我必须获取安装日期列的值
2013-01-15T00:00:00+05
。如何使用forxml子句获取此信息?假设SQL Server可以使用以下内容:
DECLARE @T TABLE (X XML);
INSERT @T VALUES ('<DocumentElement>
<PartInfo>
<ID>0</ID>
<PartNo>0</PartNo>
<SerialNo>1</SerialNo>
<Parameter>0</Parameter>
<InstalledDate>2013-01-15T00:00:00+05:30</InstalledDate>
<InstalledTill>2013-01-25T00:00:00+05:30</InstalledTill>
</PartInfo>
</DocumentElement>');
SELECT InstalledDate = X.value('/DocumentElement[1]/PartInfo[1]/InstalledDate[1]', 'DATETIME')
FROM @T;
谢谢你…bt我想在pgm中做这件事..不是作为存储过程。请告诉我我必须做什么。谢谢你..你能指定X.nodes的意思吗。在我的情况下,不能使用声明。我必须在select查询中使用ina forxml子句。那么我可以用什么来代替X?这个变量用于什么?告诉我Plz..在带有
CROSS的示例中应用
,X
表示您的列名。
SELECT InstalledDate = PartInfo.value('InstalledDate[1]', 'DATETIME')
FROM @T
CROSS APPLY X.nodes('/DocumentElement/PartInfo') p (PartInfo);