【发布时间】:2019-06-24 11:12:57
【问题描述】:
我有一个包含几千行的表。这些结果是通过使用名称列表查询 api 产生的。
对于“John Snow”的搜索,API 将返回其数据库中包含标记“john”和标记“snow”的所有条目。所以我有很多误报。
我想做的是对我的表进行子集化,以便我只有title 列(包含与我的搜索字符串匹配的字符串)包含搜索字符串的所有元素的记录,无论顺序如何。
我试过了
select * from table where 'john snow' ~* title;
select * from table where 'john snow' ILIKE '%' || title || '%';
两者都有效,但前提是 title 列按该顺序恰好包含 john snow。
之前
str_searched | title
-------------+-------
john snow | snow white
john snow | john wick
john snow | SNOW john
john snow | john Snow
john snow | Mr john snow
之后
str_searched | title
-------------+-------
john snow | SNOW john
john snow | john Snow
john snow | Mr john snow
【问题讨论】:
标签: regex postgresql sql-like string-matching