1

我正在使用带有 VB.NET 和 ODBC (Windows) 的 PostgreSQL 数据库。

我通过将 SELECT 与正则表达式相结合来搜索整个单词的句子,如下所示:

"SELECT dtbl_id, name 
   FROM mytable 
  WHERE name ~*'" + "( |^)" + TextBox1.Text + "([^A-z]|$)"  

这在某些情况下搜索得很好,但由于文本中的语法错误(或其他原因),它有时会失败。例如,如果我有句子

比利偶像:白色婚礼

将找到“白色”一词。但如果我有

冲突白暴动

然后找不到“white”,因为单词“white”的开头之间没有空格。

最简单的解决方案是将句子:,.\/-=等中的字符临时更改或替换为空格。

这是否可以在单个 SELECT 行中执行以适合与 .NET/ODBC 一起使用?也许在同一个正则表达式中?

如果是,怎么做?

4

1 回答 1

2

尝试这个:

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

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

您可以在以下位置找到更多信息:http ://www.postgresql.org/docs/9.1/static/functions-matching.html#FUNCTIONS-POSIX-REGEXP

于 2012-06-23T14:09:40.747 回答