这是我用来从我的表中获取数据的查询。
SELECT XMLQUERY('$INFO/root/database_systems/system/@name = ("SYS1","SYS2","SYS3")')
FROM MyTable WHERE ACCT_ID = 'ID-1234';
好吧实际上它让我回归真实。仅仅因为SYS1的第一个值。它存在于层次结构中但不存在于其他层次结构我只是想比较多个值。
请建议一种实现此功能的方法。感谢
<root>
<database_systems>
<system name="SYS1">1</system>
</database_systems>
</root>
答案 0 :(得分:1)
如果我理解正确,您需要检查包含至少所有子元素的database_systems
元素:
<system name="SYS1">...</system>
<system name="SYS2">...</system>
<system name="SYS3">...</system>
如果这是正确的,那么你需要和你的条件在一起,你以前所做的是一个OR:
SELECT XMLQUERY('not(empty($INFO/root/database_systems[system/@name eq "SYS1"][system/@name eq "SYS2"][system/@name eq "SYS3"]))')
FROM MyTable WHERE ACCT_ID = 'ID-1234';
我使用了三个谓词来实现AND,然后使用not(empty(...))
检查是否找到了匹配项。还有很多其他方法可以实现这一目标。