gpt4 book ai didi

sql-server - 使用 XML 查询作为 WHERE 谓词的一部分

转载 作者:行者123 更新时间:2023-12-02 23:25:52 24 4
gpt4 key购买 nike

我需要包含一个 XML 查询作为 SELECT 语句中 WHERE 谓词的一部分。

我有这样的结构:

DECLARE @tmp TABLE (typeId int, xmlCol xml);

INSERT INTO @tmp
(typeId, xmlCol)
VALUES
(1, '<search><groups><g id="25" /><g id="26" /></groups></search>'),
(1, '<search><groups><g id="250" /><g id="9" /></groups></search>'),
(2, '<search><groups><g id="25" /><g id="12" /><g id="125" /></groups></search>');

SELECT * FROM @tmp;

但我需要提取 typeId=1 所在的行AND 其中 XML 数据包含 <g id="25" /> 。因此,在我的示例中,我只会看到结果集中的第一行。

我更喜欢 XML 查询,而不是转换为 nvarchar 并使用 LIKE , 如果可能的话。我尝试了这个,但只是得到一个语法错误:

SELECT
*
FROM
@tmp
WHERE
(typeId = 1) AND
(xmlCol.query('/search/groups/g[@id=25])'))

An expression of non-boolean type specified in a context where a condition is expected, near ')'.

我一直在寻找示例,但找不到以这种方式使用的 XML 查询。

最佳答案

我认为您必须使用xmlCol.exist而不是查询。

SELECT
*
FROM
@tmp
WHERE
(typeId = 1) AND
(xmlCol.exist('/search/groups/g[@id=25]') = 1)

关于sql-server - 使用 XML 查询作为 WHERE 谓词的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29920756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com