我在 VB.NET 和 ODBC (Windows) 中使用 PostgreSQL 数据库。
我通过将 SELECT 与正则表达式相结合来搜索整个单词的句子,如下所示:
"SELECT dtbl_id, name
FROM mytable
WHERE name ~*'" + "( |^)" + TextBox1.Text + "([^A-z]|$)"
这在某些情况下搜索效果很好,但由于文本中的语法错误(或其他原因),它有时会失败。例如,如果我有这句话
BILLY IDOL: WHITE WEDDING
会找到“white”这个词。但是如果我有
CLASH-WHITE RIOT
那么将找不到“white”,因为单词“white”的开头之间没有空格。
最简单的解决方案是暂时将句子 :,.\/-=
等中的字符更改或替换为空格。
是否可以在单个 SELECT 行中执行以适合与 .NET/ODBC 一起使用?也许在同一个正则表达式中?
如果是,怎么办?
最佳答案
试试这个:
SELECT 'CLASH-WHITE RIOT' ~ '[[:<:]]WHITE[[:>:]]';
[[:<:]]
和 [[:>:]]
分别表示单词的开头和结尾
您可以在以下位置找到更多信息:http://www.postgresql.org/docs/9.1/static/functions-matching.html#FUNCTIONS-POSIX-REGEXP
关于sql - 使用正则表达式搜索 Postgresql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11169152/