0

在我们的数据库表中,列存储为 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>

我想获取此字符串的列值。例如,我必须获取列的值2013-01-15T00:00:00+05Installed Date如何使用 forxml 子句获得这个?

4

1 回答 1

0

假设 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;

如果您可以在其中有多个PartInfo节点,DocumentElement那么您将需要使用CROSS APPLY .. nodes来获取所有InstalledDates

SELECT  InstalledDate = PartInfo.value('InstalledDate[1]', 'DATETIME')
FROM    @T
        CROSS APPLY X.nodes('/DocumentElement/PartInfo') p (PartInfo);
于 2013-02-07T08:26:23.747 回答