Postgresql 这个postgres正则表达式与这个like表达式等价吗?

Postgresql 这个postgres正则表达式与这个like表达式等价吗?,postgresql,Postgresql,此查询不返回任何行: SELECT * FROM t WHERE t.s ~ '^(N_|B_).*' 而这个呢 SELECT * FROM t WHERE t.s like 'N_%' or t.s like 'B_%'; 为什么它们不相等?下划线字符在LIKE中有特殊含义,例如: 模式中的下划线表示匹配任何单个字符;百分号%与零个或多个字符的任何序列匹配。。。要在不匹配其他字符的情况下匹配文字下划线或百分号,模式中的相应字符前面必须有转义字符 因此,这些查询是等价的: SELECT *

此查询不返回任何行:

SELECT * FROM t WHERE t.s ~ '^(N_|B_).*'
而这个呢

SELECT * FROM t WHERE t.s like 'N_%' or t.s like 'B_%';

为什么它们不相等?

下划线字符在LIKE中有特殊含义,例如:

模式中的下划线表示匹配任何单个字符;百分号%与零个或多个字符的任何序列匹配。。。要在不匹配其他字符的情况下匹配文字下划线或百分号,模式中的相应字符前面必须有转义字符

因此,这些查询是等价的:

SELECT * FROM t WHERE t.s ~ '^(N_|B_).*';
SELECT * FROM t WHERE t.s like 'N\_%' or t.s like 'B\_%';