Postgres - WHERE子句用于判断值是否包含特定字符串

24
如果我想检索所有包含字符串“bar”的列foo的值的条目,是否有一种简单的方法在SQL或Postgresql中执行此操作?
类似于' WHERE foo = "bar"',但是不是=,而是' WHERE foo CONTAINS "bar"'
Postgres版本9.3

3
where foo like %bar%`' - Gordon Linoff
替代方法:strpos(foo, 'bar')在哪里? - Marc B
2个回答

37

使用 SQL 的 LIKE 语句,你可以使用 % 作为通配符。因此,你的 WHERE 语句可能是这样的:

WHERE foo LIKE '%bar%'

22

其中之一:

  1. WHERE foo LIKE '%bar%'

  2. WHERE foo ILIKE '%bar%' --对大小写不敏感

  3. WHERE foo ~* 'bar' --正则表达式

  4. WHERE foo ~* '\ybar\y' --匹配bar但不匹配foobar(\ y是单词边界)

  5. WHERE foo::tsvector @@ 'bar'::tsquery --匹配bar但不匹配foobar

您可以为foo创建索引以加快LIKEILIKEregexp搜索的速度:http://www.postgresql.org/docs/9.3/static/pgtrgm.html#AEN154464 或在全文列上使用GIN或GIST索引


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接