表学校
id | address | name
1 | Rybničná 59, Bratislava | Stredná odborná škola elektrotechnická
2 | Ul. Sibírska 1, Trnava | Stredná odborná škola elektrotechnická
来自客户端如果我想输入:
必须找到id为1和2的行
如果我想输入Bratislava或bratis它必须找到id为1的行
SELECT * FROM schools WHERE unaccent(address) LIKE ('%' || 'bratis' || '%');
我需要从2列(地址和名称)中选择
答案 0 :(得分:0)
我希望这有效
SELECT * FROM schools
WHERE unaccent(address|| ' ' ||name) ILIKE ('%' || 'bratis' || '%');
答案 1 :(得分:0)
要进行搜索case insentive,请使用ILIKE
代替LIKE
。然后,您还希望从输入字符串中删除重音。最后,只需使用AND
或OR
来合并这两个条件(请注意,您可以对两列使用相同的搜索字词 - 在这种情况下使用OR
)
SELECT * FROM schools
WHERE unaccent(address) ILIKE ('%' || unaccent('bratis') || '%')
AND unaccent(name) ILIKE ('%' || unaccent('Stredná odborná') || '%')