今天研发查询数据库遇到一个奇怪的现象 ,不区分大小写 A,a和 ã
mysql> select supplier_name from supplier where supplier_name="BARBOSA MUSSNICH ARAGAO";
+--------------------------+
| supplier_name |
+--------------------------+
| BARBOSA MUSSNICH ARAGAO |
| Barbosa Mussnich Aragão |
+--------------------------+
liunx mysql 数据库默认排序规则为ci 不区分大小写
改为cs 区分大小写 ,但是可能不区分发音,改为bin 可以区分
参考资料
官方文档解释:
MySQL :: MySQL 5.7 Reference Manual :: 10.14.1 Collation Implementation Types
字母a上有一个~符号通常出现在葡萄牙语中,这个符号称为鼻音符号,只出现在元音字母a上,表示该元音字母要发鼻音。在葡萄牙语中,鼻音符号"~"可以出现在元音字母a上,形成"ã"这个音节,表示该元音发鼻音。这种符号的使用在葡萄牙语中是一种语法现象,用于指示某些元音字母应该发出鼻音1。
在语言里,波浪号是放在字母上的一变音符音,用来表示发音的改变,如鼻音化。在希腊语的多声调拼写法里,波浪号为抑扬符号的变体。
它被当做缩写来使用于中古拉丁语的文书上。当「n」或「m」跟在一母音后时,它常常会被忽略掉,而将波浪号放在前一母音上面来表示此一忽略子母。
这是波浪号被用来表示鼻音化的起源。直到17世纪为止,用以忽略「n」或「m」的母音上之波浪号持续被用在法语出版书籍上以缩短文章的长度。波浪号偶尔亦被使用在其他的缩写上,如字母「q」上来强调单字que(那)。