PostgreSQL:按日期范围选择xml字段

93ze6v8z  于 5个月前  发布在  PostgreSQL
关注(0)|答案(1)|浏览(42)

我有一个名为“driver_license”的XML字段,其中包含以下内容:

<driver_license>
 <no>123</no>
 <issue_date>2023-11-20</issue_date>
</driver_license>

字符串
我需要选择issue_date大于某个日期的记录。
在MSSQL上,我可以执行以下查询:

SELECT * FROM persons AS t
WHERE t.driver_license.exist( 'driver_license/issue_date[.>=''2023-12-04'']' ) = 1


但我不知道如何在PostgreSQL上做到这一点。这是行不通的:

WHERE xmlexists('//driver_license/issue_date[.>=''2023-12-04'']' PASSING BY REF t.driver_license )


因为>=只适用于整数。
我将感谢任何建议。

monwx1rj

monwx1rj1#

下面是一个使用XMLTABLE生成基于XML值的表的选项:

SELECT t.*
FROM mytable t
CROSS JOIN XMLTABLE ('//driver_license'
                     PASSING t.driver_license
                     COLUMNS issue_date date PATH 'issue_date'
                    ) x
WHERE x.issue_date > '2023-10-04';

字符串
Demo here

相关问题