特别是,我正在寻找一种方法来更轻松地重写我的查询,而不必每次都使用“更低”的功能。
在SQL Server中,我的查询如下所示:
WHERE (FIELD LIKE '%Foot%Locker%' or FIELD LIKE '%Foot%Action%' or FIELD LIKE '%Champs%')
在PostgreSQL中,我必须重写每个查询(如果我希望我的查询同时捕获Foot Locker AND foot locker和任何其他大写驱动的排列):
WHERE (lower(FIELD) LIKE lower('%foot%locker%') or lower(FIELD) LIKE lower('%foot%action%') or lower(FIELD) LIKE lower('%champs%')
这当然非常烦人。我必须重写100个查询。有一个简单的解决方法吗?
答案 0 :(得分:4)
Postgres正是您正在寻找的ilike
:
可以使用关键字
ILIKE
代替LIKE
来进行匹配 根据活动区域设置不区分大小写。这不在 SQL标准,但是PostgreSQL扩展。
(记录here。)
所以,你可以这样做:
WHERE (field ILIKE '%foot%locker%' or FIELD ILIKE '%foot%action%' or FIELD) ILIKE '%champs%'
或者,如果您愿意:
WHERE lower(field) ~ '(foot.*locker)|(foot.*action)|champ'