我有这样的查询:
BaseDimension
位置等于$profilesx->where('qZipCode', $location)->
orWhere('qCity', 'LIKE', '%'.$location.'%');
,数据库列显示belgrade
。
它似乎区分大小写(使用=或LIKE),所以如果我搜索Belgrade
我会得到一个结果但是如果我搜索Belgrade
我就没有得到任何结果。
如何使其不区分大小写?
答案 0 :(得分:0)
这通常是数据库的排序规则设置。您需要将其设置为不区分大小写的排序规则类型。
请阅读此链接以获取更多信息:
http://dev.mysql.com/doc/refman/5.7/en/case-sensitivity.html
答案 1 :(得分:0)
默认字符集和排序规则是latin1和 latin1_swedish_ci,所以非二进制字符串比较就是这种情况 默认情况下不敏感。这意味着如果使用col_name进行搜索 像LI' a%',您获得以A或a开头的所有列值。要做 这个搜索大小写敏感,确保其中一个操作数有一个 区分大小写或二进制排序规则。例如,如果您正在进行比较 一个列和一个字符串都有latin1字符集,你可以 使用COLLATE运算符使任一操作数具有 latin1_general_cs或latin1_bin整理:
来源:http://dev.mysql.com/doc/refman/5.7/en/case-sensitivity.html
实际发生的是案例敏感性已被关闭(这不是一件坏事)。该解决方案在该文档的下一部分中给出。尝试像
这样的东西orWhere('qCity', 'COLLATE latin1_general_cs LIKE', '%'.$location.'%');
如果laravel不喜欢它,您将不得不使用原始查询或更改列的排序规则设置。
作为旁注,如果可以的话,尽量避免LIKE%某些%查询。 Mysql不能为这些类型的查询使用索引,因此它们在大型表上通常会很慢。