我正在尝试将一些查询从 Oracle 环境转换为 Postgres。这是其中一个查询的简化版本:
SELECT * FROM TABLE
WHERE REGEXP_LIKE(TO_CHAR(LINK_ID),'\D')
我相信等效的 postgreSQL 应该是这样的:
SELECT * FROM TABLE
WHERE CAST(LINK_ID AS TEXT) ~ '\D'
但是当我在它们各自的环境中对完全相同的数据集运行这些查询时,第一个查询不输出任何记录(这是正确的),第二个查询输出表中的所有记录。我没有编写原始代码,但据我了解,它正在寻找数字字段 LINK_ID 中非数字字符的任何值。\D 元字符在 Oracle 和 postgres 中的行为是否应该不同?我在文档中没有看到任何东西说他们应该这样做。