我已经使用了所有字母字符标题,用户可以点击该字符,并且可以从该字符开始获得结果,例如,如果我点击“A”,它将获得以所有“Albert”开头的记录
ALL A B c d e f g h i j k l m n o p q r s t u v w x y z Æ Å Ø Ö Ä 0-9
mysql查询变为LIKE "a%"
但问题是它还会带来那些以特殊字符“Å”开头的记录,我不想要这些,只有在我点击并搜索它们时才会出现,就像使用这个LIKE "Å%"
怎么可能?
更新:我的db,表都是UTF-8排序规则。
答案 0 :(得分:2)
您可以使用BINARY运算符根据其二进制表示形式搜索字符串(等等逐字节而不是逐个字符):
像这样(只需替换你的表信息)
SELECT * FROM `mytable` WHERE BINARY name LIKE 'A%'
以上是逐字节而不是逐字符搜索,这至少解决了我的类似问题。我用它来搜索国家的本地名称和类似的信息。
<强>更新强>
对于区分大小写和UTF-8的数据,您可以尝试这样做:
SELECT name FROM `mytable` WHERE name COLLATE utf8_bin LIKE 'a%'; // returned only lower a's latin
SELECT name FROM `mytable` WHERE name COLLATE utf8_bin LIKE 'ä%'; // returned only lower ä's
答案 1 :(得分:0)
你可以像这样使用
if(mysql_num_rows($query)==0){
SELECT name FROM `mytable` WHERE name COLLATE UTF8_GENERAL_CI LIKE '%a%';
SELECT name FROM `mytable` WHERE name COLLATE UTF8_GENERAL_CI LIKE '%ä%';
}
%a%==它将搜索以
开头的所有内容%%%==它将搜索所有以ä
开头的内容