MySQL 5中ä,ö,å等字符的问题

4 mysql

我在Linux系统上运行MySQL 5.xx.我的应用程序正确地将ä,ö,å等字符写入数据库,甚至可以正确获取这些值.但是当我使用WHERE过滤搜索char'ä'时,它也会返回包含'a'字符的字符串.为什么MySQL认为a等于ä?

示例查询:

SELECT列FROM表WHERE字段='%ä%';

Qua*_*noi 7

MySQL使用排序规则来比较字符值.

排序规则是数据库用于定义哪些字符不同以及在比较时不存在的规则集.

区分大小写的排序区分'QUERY''query'不区分大小写.

重音敏感的校对区分'résumé''resume',不重视不敏感.

在列的默认排序规则(最有可能UTF8_GENERAL_CI)中,与未声明的字符无法区分:

SELECT 'a' LIKE '%ä%'
---
  1
Run Code Online (Sandbox Code Playgroud)

要区分它们,请使用二进制排序规则(将具有不同unicodes的所有字符视为不同的字符):

SELECT 'a' LIKE '%ä%' COLLATE UTF8_BIN
---
  0
Run Code Online (Sandbox Code Playgroud)