在postgres中搜索表中字段内的特定字符

时间:2014-06-19 11:57:47

标签: postgresql

我有许多字段都有无序信息,并且需要查找某些具有特定模式搜索的记录。例如:

field1 , field2
1      , "house, cars, people"
2      , "mazda, Jefff, cat 15th stre"
3      , "do, money, arreaz, cars"
.
.
N      , "cars, postgres, json, abat"

当我发布帖子时,只搜索包含" cars"

这个词的记录

感谢任何可以提供帮助的人

2 个答案:

答案 0 :(得分:3)

您应该使用正则表达式来匹配您可以执行以下操作的特定示例:

field2  ~ '^cars$'  or
field2  ~ ',cars,'  or
field2  ~ '^cars,'  or
field2  ~ ',cars$'

使用正则表达式,您可以在字符串的开头,字符串的结尾,字符串的开头等处搜索逗号。

答案 1 :(得分:0)

如果PostgreSQL的regular expressions' definition of word characters(字母数字字符和/或下划线_的单词)对您来说足够好,您可以使用它:

WHERE field2  ~ '\mcars\M'

您还可以使用pg_trgm contrib module来加快查询速度。

但我强烈建议您检查PostgreSQL's full text search支持(如果您想要在您的字段中进行搜索,就像在描述中一样),或者您应该修改您的结构(例如,您可以使用另一个表格来{{ 1}}条目(首选),甚至是数组,而不是普通的逗号分隔字段。)