gpt4 book ai didi

mysql - 如何在 mysql 中搜索以使重音字符与非重音字符相同?

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

我想要:

piščanec = mysql 中的 piscanec。我的意思是,我想搜索 piscanec 以找到 piščanec。

所以 č 和 c 是一样的,š 和 s 等等......

我知道可以使用正则表达式来完成,但这很慢:-(还有其他方法可以使用 LIKE 吗?我也经常使用全文搜索。

更新:

select CONVERT('čšćžđ' USING ascii) as text

不起作用。产生:??????

最佳答案

使用排序规则 utf8_generic_ci 声明列。此排序规则认为 š 等于 s,而 č 等于 c:

create temporary table t (t varchar(100) collate utf8_general_ci);
insert into t set t = 'piščanec';
insert into t set t = 'piscanec';
select * from t where t='piscanec';
+------------+
| t |
+------------+
| piščanec |
| piscanec |
+------------+

如果您不想或不能对列使用 utf8_generic_ci 排序规则——也许您在该列上有一个唯一索引并且想要考虑 piščanec 和 piscanec 不同?——您只能在查询中使用排序规则:

create temporary table t (t varchar(100) collate utf8_bin);
insert into t set t = 'piščanec';
insert into t set t = 'piscanec';
select * from t where t='piscanec';
+------------+
| t |
+------------+
| piscanec |
+------------+
select * from t where t='piscanec' collate utf8_general_ci;
+------------+
| t |
+------------+
| piščanec |
| piscanec |
+------------+

FULLTEXT 索引应该直接使用列排序规则;您不需要定义新的排序规则。显然全文索引只能在列的存储排序规则中,所以如果你想使用 utf8_general_ci 进行搜索和 utf8_slovenian_ci 进行排序,你必须使用 use collat​​e 顺序为:

select * from tab order by col collate utf8_slovenian_ci;

关于mysql - 如何在 mysql 中搜索以使重音字符与非重音字符相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12949800/

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