Postgres - 关于值是否包含某个字符串的WHERE子句

时间:2015-05-21 15:20:55

标签: sql string postgresql where

如果我想检索所有条目,使列foo值包含字符串'bar',是否有一种简单的方法可以在SQL或Postgresql中执行此操作?

' WHERE foo = "bar"'这样的东西,而不是=,就像' WHERE foo CONTAINS "bar"'一样。

Postgres版本9.3

2 个答案:

答案 0 :(得分:4)

使用SQL LIKE语句。有了它,您可以使用%作为通配符。因此,您的WHERE声明可能类似于:

WHERE foo LIKE '%bar%'

答案 1 :(得分:3)

其中一个:

  1. WHERE foo LIKE '%bar%'

  2. WHERE foo ILIKE '%bar%' --case insensitive

  3. WHERE foo ~* 'bar' --regex

  4. WHERE foo ~* '\ybar\y' --matches bar but not foobar (\y is word boundary)

  5. WHERE foo::tsvector @@ 'bar'::tsquery --matches bar but not foobar

  6. 您可以对foo进行索引,以便更快地进行LIKEILIKEregexp次搜索:http://www.postgresql.org/docs/9.3/static/pgtrgm.html#AEN154464