gpt4 book ai didi

mysql - 使用国际字符时,我从 mysql 查询中得到双重结果,即 Å/Ä=A & Ö=O,

转载 作者:可可西里 更新时间:2023-11-01 07:57:33 24 4
gpt4 key购买 nike

例如,如果我搜索名字 Åsa 我只想得到名字 Åsa 而不是 Asa,与 Björn 相同而不是 Bjorn

$query="select * from users where username like 'Björn'";
$result=mysql_query($query);
$num=mysql_num_rows($result);
echo"$num";
$i=0;
while($i<$num){
$id=mysql_result($result,$i,"id");
$name=mysql_result($result,$i,"username");
echo"<br/>$id,$name";
$i++;
}

结果

34,Björn
67,Bjorn

应该只显示结果 34
我正在使用

mysql_query("SET NAMES utf8");
mysql_query( "SET CHARACTER SET utf8");

数据库、表和列设置为utf8_unicode_ci

最佳答案

您的“问题”是 utf8_unicode_ci 归类。该排序规则进行“字符扩展”,这意味着即使在 = 比较中,变音符号及其基本字符也被视为相同:

A = Ä
O = Ö
...

这个 mySQL 手册页上的第二个例子解释了这个问题:9.1.7.8. Examples of the Effect of Collation

您需要做的是切换到区分元音变音符和基本字符的排序规则(例如 utf8_general_ciutf8_general_bin),或者仅在以下情况下切换到不同的排序规则做比较:

select * from users where username like 'Björn' COLLATE utf8_general_ci;

这显然比较慢,因为在查询过程中必须对每条记录进行排序规则转换。

关于mysql - 使用国际字符时,我从 mysql 查询中得到双重结果,即 Å/Ä=A & Ö=O,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4018950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com