如果我想检索所有条目,使列foo
值包含字符串'bar'
,是否有一种简单的方法可以在SQL或Postgresql中执行此操作?
像' WHERE foo = "bar"'
这样的东西,而不是=
,就像' WHERE foo CONTAINS "bar"'
一样。
Postgres版本9.3
答案 0 :(得分:4)
使用SQL LIKE
语句。有了它,您可以使用%
作为通配符。因此,您的WHERE
声明可能类似于:
WHERE foo LIKE '%bar%'
答案 1 :(得分:3)
其中一个:
WHERE foo LIKE '%bar%'
WHERE foo ILIKE '%bar%' --case insensitive
WHERE foo ~* 'bar' --regex
WHERE foo ~* '\ybar\y' --matches bar but not foobar (\y is word boundary)
WHERE foo::tsvector @@ 'bar'::tsquery --matches bar but not foobar
您可以对foo
进行索引,以便更快地进行LIKE
,ILIKE
和regexp
次搜索:http://www.postgresql.org/docs/9.3/static/pgtrgm.html#AEN154464