我正在使用带有VB.NET和ODBC(Windows)的PostgreSQL数据库。
我正在通过将SELECT与正则表达式相结合来搜索整个单词的句子,如下所示:
"SELECT dtbl_id, name
FROM mytable
WHERE name ~*'" + "( |^)" + TextBox1.Text + "([^A-z]|$)"
这在某些情况下搜索得很好,但由于文本中的语法错误(或其他原因),它有时会失败。例如,如果我有句子
BILLY偶像:白色婚礼
将找到“白色”一词。但如果我有
CLASH-WHITE RIOT
然后找不到“white”,因为“white”字的开头之间没有空格。
最简单的解决方案是暂时将句子:,.\/-=
等中的字符更改或替换为空格。
单个SELECT行可以做到适合与.NET / ODBC一起使用吗?也许在同一个正则表达式中?
如果是,怎么样?
答案 0 :(得分:2)
试试这个:
SELECT 'CLASH-WHITE RIOT' ~ '[[:<:]]WHITE[[:>:]]';
[[:<:]]
和[[:>:]]
只是分别表示单词的开头和结尾
您可以在http://www.postgresql.org/docs/9.1/static/functions-matching.html#FUNCTIONS-POSIX-REGEXP
找到更多信息