使用正则表达式进行Postgresql数据库搜索

时间:2012-06-23 11:30:49

标签: sql regex postgresql

我正在使用带有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一起使用吗?也许在同一个正则表达式中?

如果是,怎么样?

1 个答案:

答案 0 :(得分:2)

试试这个:

SELECT 'CLASH-WHITE RIOT' ~ '[[:<:]]WHITE[[:>:]]';

[[:<:]][[:>:]]只是分别表示单词的开头和结尾

您可以在http://www.postgresql.org/docs/9.1/static/functions-matching.html#FUNCTIONS-POSIX-REGEXP

找到更多信息