我有许多字段都有无序信息,并且需要查找某些具有特定模式搜索的记录。例如:
field1 , field2
1 , "house, cars, people"
2 , "mazda, Jefff, cat 15th stre"
3 , "do, money, arreaz, cars"
.
.
N , "cars, postgres, json, abat"
当我发布帖子时,只搜索包含" cars"
这个词的记录感谢任何可以提供帮助的人
答案 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}}条目(首选),甚至是数组,而不是普通的逗号分隔字段。)