PostgreSQL 中的正则表达式
正则表达式提供了一种强大的方法来搜索文本字符串中的模式。但是,有时您可能会在有效使用它们时遇到挑战。
一个这样的示例是尝试匹配以“00”开头但第三个字符不是“0”的字符串。将 LIKE 子句与“00[1-9]%”等表达式一起使用可能无法按预期工作。
要解决此问题,您可以使用正则表达式运算符 (~) 和方括号表达式。考虑以下查询:
SELECT * FROM tbl WHERE value ~ '^00[^0]'
这里,^ 表示模式应该在字符串的开头匹配,1 是匹配的字符类任何非“0”的字符。
或者,为了获得最佳性能,您可以使用 LIKE 和 NOT LIKE 的组合表达式:
SELECT * FROM tbl WHERE value LIKE '00%' AND value NOT LIKE '000%'
LIKE 通常比正则表达式更快,因此在适当的时候使用它是有益的。此外,PostgreSQL 可以利用左锚定 LIKE 表达式的索引(例如“00%”),这可以显着提高大型表的性能。
以上是PostgreSQL中如何高效匹配以'00”开头但不是'000”的字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!