sql - 使用正则表达式搜索 Postgresql 数据库

标签 sql regex postgresql

我在 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/

相关文章:

php - 出现错误 SQLSTATE[HY000] [2002] NAS Synology 上的连接被拒绝

regex - 使用 regex/grep/awk/sed 解析复杂的调试日志

java - 使用正则表达式,java从电话号码中删除可选的零

java - Tomcat 领域形式 : login always fails

sql - MySQL 跳过一个子级别

Sqlite 使用 JOIN 和重复项减去总和(使用分组依据)

MySql Order by 未显示正确结果

regex - 使用 BASH 转换文件名中的最后一个连字符

java - 如何修复 Catch 语句中的 SQLException?

postgresql - PostgreSQL 可以加入存储过程吗?