Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用forxml子句从xmlstring读取列值_Sql_Xml_For Xml - Fatal编程技术网

Sql 如何使用forxml子句从xmlstring读取列值

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:

在我们的数据库表中,列存储为xml字符串,如下所示

<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);