SQL Server 如何在SQL中按属性查询XML列?

vfwfrxfs  于 2023-02-11  发布在  其他
关注(0)|答案(1)|浏览(147)

我需要查询一个XML列并返回符合特定条件的行。该XML列称为Configuration,示例值如下所示:

<feed>
    <schedule>
        <arrivalSla dayOfWeek="monday" time="02:00:00" />
    </schedule>
</feed>

我想返回时间为“04:00:00”的所有行。
我已经知道了如何查询一个没有时间等属性的简单XML列,但是我需要查询属性。

ecbunoof

ecbunoof1#

你可以试试这样的方法:

DECLARE @Sample TABLE (ID INT NOT NULL, Configuration XML)

INSERT INTO @Sample (ID, Configuration)
VALUES (1, '<feed>
    <schedule>
        <arrivalSla dayOfWeek="Monday" time="02:00:00" />
    </schedule>
</feed>'), (2, '<feed>
    <schedule>
        <arrivalSla dayOfWeek="Tuesday" time="04:00:00" />
    </schedule>
</feed>'), (3, '<feed>
    <schedule>
        <arrivalSla dayOfWeek="Wednesday" time="05:00:00" />
    </schedule>
</feed>')

SELECT
    ID,
    XmlDayOfWeek = s.Configuration.value('(/feed/schedule/arrivalSla/@dayOfWeek)[1]', 'varchar(50)')
FROM
    @Sample s
WHERE
    s.Configuration.value('(/feed/schedule/arrivalSla/@time)[1]', 'varchar(20)') = '04:00:00'

这将产生以下结果:

ID    XmlDayOfWeek
------------------
2     Tuesday

相关问题