gpt4 book ai didi

MySQL LIKE 不适用于 "â"

转载 作者:行者123 更新时间:2023-11-29 11:57:08 26 4
gpt4 key购买 nike

我在 Windows 2012R2 上运行 MySQL 5.6.26,在 mysql.ini 中,所有内容都配置为使用 UTF-8 Unicode (utf8)。

[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8

我使用这个表:

CREATE TABLE IF NOT EXISTS `wcf1_guildtool_playerdata` (
`charID` int(11) NOT NULL,
`charname` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`realmname` varchar(25) COLLATE utf8_unicode_ci NOT NULL,
`class` int(11) DEFAULT NULL,
`race` int(11) DEFAULT NULL,
`gender` int(11) NOT NULL,
`level` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

当我执行以下 SQL 命令时:

SELECT * FROM wcf1_guildtool_playerdata WHERE charname LIKE 'Veneanâr'

数据库返回我这个数据:

118 Veneanar Forscherliga 3 5 0 56

但它应该不返回任何内容,因为没有“Veneanâr”条目。

这个问题出现在我的 PHPMyAdmin 中的 PHP 脚本(使用 PDO 语句)甚至 mysql 命令行中。

我的 PHP 脚本检查字符名是否已存在并执行更新,如果不存在则创建一个新条目。我必须创建“Veneanar”和“Veneanâr”,但是虽然 MySQL 声称已经存在“Veneanâr”(事实并非如此),但脚本会使用错误的数据更新条目。

我不明白为什么会发生这种情况。我的mysql配置有问题吗?

最佳答案

MySQL 将 âåä 视为 a。请参阅文档:

http://dev.mysql.com/doc/refman/5.1/en/charset-collation-effect.html

http://dev.mysql.com/doc/refman/5.1/en/charset-unicode-sets.html

要进行严格的查询,您可以执行以下操作:

SELECT * FROM wcf1_guildtool_playerdata WHERE charname LIKE 'Veneanâr' COLLATE utf8_bin

关于MySQL LIKE 不适用于 "â",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33023557/

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