gpt4 book ai didi

mysql - utf8_turkish_ci 归类上的 MySql LIKE 运算符有什么问题?

转载 作者:可可西里 更新时间:2023-11-01 07:09:29 28 4
gpt4 key购买 nike

我有如下表格:

wordId     |   word      
---------------------------------
1 | axxe
2 | test word
3 | another test word

我正在尝试运行下面的查询以查找以字母“ax”开头的记录。

SELECT * FROM `words` WHERE word LIKE 'ax%'

MySQL 找不到任何东西。

但是,如果我尝试下面的查询之一,我可以在结果中看到正确的记录(单词“axxe”)。

SELECT * FROM `words` WHERE word='axxe'

SELECT * FROM `words` WHERE word LIKE '%ax%'

SELECT * FROM `words` WHERE word LIKE 'a%'

为什么 MySQL 不能为第一个查询找到正确的值?我尝试在命令行和 phpMyAdmin 上运行它,但结果是一样的。

这是 SHOW CREATE TABLE 输出:

CREATE TABLE `words` (
`wordId` int(11) NOT NULL auto_increment,
`word` text collate utf8_turkish_ci NOT NULL
PRIMARY KEY (`word`)
) ENGINE=MyISAM AUTO_INCREMENT=2853 DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci

最佳答案

长话短说:

Update your MySQL version.


我在这里模拟了你的问题:

创建表:

CREATE TABLE `turky` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`word` text COLLATE utf8_turkish_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci

插入数据:

INSERT INTO `turky` (`id`, `word`) VALUES
(1, 'axxe'),
(2, 'test word'),
(3, 'axxxxxe'),
(4, 'another test word');

运行测试查询(有效):

SELECT * FROM `turky` WHERE `word`='axxe' 

结果:

1, 'axxe',

运行测试查询 2(有效):

SELECT * FROM `turky` WHERE word LIKE '%ax%'

结果:

1, 'axxe',
3, 'axxxxxe',

运行测试查询 3(有效):

SELECT * FROM `turky` WHERE word LIKE 'a%'

结果:

1, 'axxe',
3, 'axxxxxe',
4, 'another test word';


运行测试查询 4(最初不起作用):

SELECT * FROM `turky` WHERE `word` LIKE 'ax%' 

结果:

1, 'axxe',
3, 'axxxxxe',

这适用于 MySQL,使用 PHPMyAdmin。

版本:
MySQL: 5.6.35
PHPMyAdmin:4.6.6


当前的土耳其语字母表不包含字母“x”,因此这一事实可能[可能不会] 对 SQL 排序过程造成一些模糊的干扰(因为缺少语言指导时寻找这个角色)。

网络搜索 MySQL 中的土耳其语错误,虽然有六个,但似乎没有一个是针对您的特定实例的。

但是,根据我自己的测试(以上),使用您提供给我们的表和 SQL 详细信息,我可以看到的唯一选择是您使用的是旧版本的 MySQL,其中包含一些土耳其语错误。


如果你的 MySQL 版本是最新的

(或者至少比我的更新)

然后这个问题似乎特定于您的设置和数据,所以我非常怀疑我们能否找到并重现这个问题:-(


更多诊断内容:
正如 Jacob H 评论的那样,看看这个问题在转换为二进制后是否仍然出现:

SELECT * FROM `turky` WHERE BINARY `word` LIKE CONCAT(BINARY 'ax','%'); 

结果:

1, 'axxe',
3, 'axxxxxe',

关于mysql - utf8_turkish_ci 归类上的 MySql LIKE 运算符有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43877437/

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