当前位置: 首页 > 面试题库 >

MySQL将ÅÄÖ视为AAO?

南宫炜
2023-03-14
问题内容

这两个查询为我提供了完全相同的结果:

select * from topics where name='Harligt';
select * from topics where name='Härligt';

这怎么可能?好像mysql在搜索时将åäö转换为aao。有什么办法可以关闭此功能吗?

据我所知,我到处都使用utf-8编码。从终端和php都发生相同的问题。


问题答案:

是的,这是非语言特定Unicode归类中的标准行为。

9.1.13.1。Unicode字符集

为了进一步说明,utf8_general_ci和utf8_unicode_ci中都具有以下相等性(有关比较或搜索时的效果,请参见第9.1.7.7节“排序规则的效果示例”):

Ä= AÖ= OÜ= U

另请参阅整理效果的示例

你需要

  • 使用不具有此“功能”的排序规则(即utf8_bin,但有其他后果)

  • 仅对查询 使用其他排序规则。这应该工作:

    select * from topics where name='Harligt' COLLATE utf8_bin;
    

如果您不区分大小写LIKE 进行Ä = A变音符号转换,则会变得更加困难。我不知道不区分大小写的mySQL排序规则,并且不执行这种隐式变音符号转换。如果有人认识我,我很想听听。

有关:

  • 寻找不区分大小写的MySQL排序规则,其中“ a”!=“ä”
  • MYSQL区分大小写搜索utf8_bin字段


 类似资料:
  • 假设我有三个不同的MySQL表: 表: 表: 表: 我想要得到一个表,合作伙伴在行和产品作为列。到目前为止,我能够得到如下输出: 使用此查询: 但我更想要这样的东西: 问题是,我无法告诉我将拥有多少个产品,因此需要根据products表中的行动态更改列号。 这个很好的答案似乎并不适用于MySQL:T-SQL Pivot?从行值创建表列的可能性

  • 问题内容: 可以说我有三个不同的MySQL表: 表: 表: 表: 我想得到一个表格,其中行和产品列为合作伙伴。到目前为止,我已经能够获得如下输出: 使用此查询: 但我想改成这样: 问题是我无法知道我将拥有多少个产品,因此列号需要根据产品表中的行动态更改。 这个很好的答案似乎不适用于mysql:T-SQL Pivot吗?根据行值创建表格列的可能性 问题答案: 不幸的是,MySQL没有您基本上想做的功

  • 问题内容: 我使用google-gson将Java映射序列化为JSON字符串。它提供了一个生成器来处理null值: 问题在于结果是字符串,如: 所需的结果是: 我可以为和进行字符串替换,但这很难看并且容易出错。是否有本地gson支持添加自定义String而不是? 问题答案: 如果这是您的应用程序类型,则可以注册类型适配器。但是Gson不允许您更改字符串或原始类型的序列化形式。 最好的选择是更改Ja

  • 本文向大家介绍查询将MySQL LIKE实现为MySQL IN?,包括了查询将MySQL LIKE实现为MySQL IN?的使用技巧和注意事项,需要的朋友参考一下 要实现类似MySQL IN()的查询,您需要使用COUNT(),IF()以及LIKE运算符。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 这是将LIKE实现为IN

  • 问题内容: 我有此查询在MySQL中正常工作。这里有更多背景信息。 我尝试在PostgreSQL中运行它,但此错误消息失败。 PGError:错误:列“ c.name”必须出现在GROUP BY子句中或在聚合函数中使用 我不确定这是什么意思,所以我尝试在group by子句中将“ c.id”更改为“ c.name”(在MySQL中两者都是相同的,假定项的名称是唯一的)。 但是,这又产生了另一个类似

  • 问题内容: 有没有简单的方法可以将Transact-SQL转换为MySQL? 我正在尝试转换股票代码和公司名称的数据库档案。 问题答案: 简短的回答: 否 中等答案: MAYBE 长答案: 这取决于TSQL中的内容以及要投入的时间和精力。 TSQL不是MySQL方言的子集。因此,存在一些没有MySQL转换的TSQL。但是,两种语言之间的重叠非常重要,并且在某种程度上转换只是语法问题。 这不是一个新