查询:
SELECT users.* FROM "users" WHERE (lower(fname) || ' ' || lower(lname) LIKE '%jeff bat%') LIMIT 25
不返回fname:jeff和lname:bat
的用户但如果你跑
SELECT users.* FROM "users" WHERE (lower(fname) || ' ' || lower(lname) LIKE '%jeff ba%') LIMIT 25
如果关闭一个字符,它会返回该用户。为什么%LIKE不返回完全匹配?如何更新查询以包含完全匹配?感谢
答案 0 :(得分:0)
您应该通过在查询中包含trim功能来获得确切的结果,如下所示
SELECT users.* FROM "users" WHERE (trim(lower(fname)) || ' ' || trim(lower(lname)) LIKE '%jeff ba%')
答案 1 :(得分:0)
显然你需要修剪,因为@kanchirk说:
应该这样做或以这种方式尝试
SELECT users.*
FROM "users"
WHERE lower(trim(fname)) LIKE '%jeff %'
AND lower(trim(lname)) LIKE '%bat%')
LIMIT 25
答案 2 :(得分:0)
我自己的预感是kanchirk的诊断,有一个转折点:除了修剪之外,任何一个案例敏感性的可能性还会增加其丑陋的头部吗?
答案 3 :(得分:-2)
结尾处的%表示名称的“Bat”部分中有更多字符。所以“Bats”,“Batch”和“Batty”会匹配,但“Bat”不会,因为它在“t”之后没有任何东西。从理论上讲,%匹配0+个字符,但这似乎不会发生在这里。