10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 41.5 mb
PDF (A4)- 41.6 mb
手册页(TGZ)- 262.1 kb
手册页(邮政编码)- 372.3 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册摘录

10.14.4.1定义UCA排序使用LDML语法

添加一个UCA Unicode字符集不重新编译MySQL的排序,使用以下过程。如果您不熟悉LDML规则用于描述排序的排序特征,明白了部分10.14.4.2,“MySQL LDML语法支持”

示例添加一个排序命名utf8_phone_ciuse utf8字符集。排序是专为一个场景包括一个Web应用程序的用户发布他们的名字和电话号码。电话号码可以给非常不同的格式:

+ 7-12345-67 + 7-12345-67 + 7 12 345 67 345 67 + 71234567 + 7 (12)

提出的问题处理这些类型的值是允许不同格式做非常困难的寻找一个特定的电话号码。解决方法是定义一个新的排序,重整标点符号,使它们可忽略的。

  1. 选择一个排序ID,如所示部分10.14.2”,选择一个排序ID”。下面的步骤使用ID 1029。

  2. 修改Index.xml配置文件。此文件位于目录命名的character_sets_dir系统变量。你可以检查变量值如下,虽然道路名称在您的系统上可能有所不同:

    mysql >显示变量如“character_sets_dir”;+ - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | Variable_name | | +价值- - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | character_sets_dir | / user /地方/ mysql /分享/ mysql /数据集/ | + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  3. 选择排序的名称的列表Index.xml文件。此外,您将需要提供排序排序规则。找到<字符集>元素的字符集添加排序,并添加一个<排序>指出排序元素,名称和ID,将名称和ID关联。在<排序>元素,提供一个<规定>元素包含排序规则:

    <字符集名称= " utf8 " >…<排序规则名= " utf8_phone_ci " id = " 1029 " > <规定> <设置> \ u0000 < /重置> <我> \ u0020 < / i > < !——空间——> <我> \ u0028 < / i > < !——左括号——> <我> \ u0029 < / i > < !——右括号——> <我> \ u002B < / i > < !- + - > <我> \ u002D < / i > < !——连字符> < /规则> < /排序>…< /字符集>
  4. 如果你想要一个类似的排序为其他Unicode字符集,添加其他<排序>元素。例如,定义ucs2_phone_ci,添加一个<排序>元素的<字符集名称= " ucs2 " >元素。记住,每个排序必须有自己独特的ID。

  5. 重新启动服务器并使用这条语句来验证排序存在:

    mysql >显示排序,排序=“utf8_phone_ci”;+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + |排序|字符集|默认Id | | |编译Sortlen | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + | utf8_phone_ci | utf8 | 1029 | | | | + 8 - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +

现在测试的校对,以确保所需的属性。

创建一个表包含一些示例使用新的电话号码排序:

mysql >创建表电话簿(姓名VARCHAR(64),电话VARCHAR(64)字符集utf8核对utf8_phone_ci);查询好,影响(0.09秒)mysql > 0行插入电话簿值(Svoj, + 7 912 800 80 02);查询好了,1行影响(0.00秒)mysql >插入电话簿值(“高频”、“+ 7 (912)800 80 04);查询好了,1行影响(0.00秒)mysql >插入电话簿值(“酒吧”,“+ 7-912-800-80-01”);查询好了,1行影响(0.00秒)mysql >插入电话簿值(“Ramil”,“(7912) 800 80 03”);查询好了,1行影响(0.00秒)mysql >插入电话簿值(Sanja, + 380 (912) 8008005);查询好了,1行影响(0.00秒)

运行一些查询是否忽略标点符号实际上是忽视了比较和排序:

mysql > SELECT *通过电话从电话本订单;+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | + |名字电话| + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | Sanja | + 380(912) 8008005 | | | +酒吧7-912-800-80-01 | | Svoj | + 7 912 800 80 02 | | Ramil |(7912) 800 80年03 | |高频| + 7(912)800 80年04 | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + 5行组(0.00秒)mysql > SELECT *从电话簿电话=“+ 7 (912)800-80-01”;+ - - - - - - - - - - - - - - - - - - - - - - - - | + |名字电话| + - - - - - - - - - - - - - - - - - - - - - - - - +酒吧| | + 7-912-800-80-01 | + + - - - - - - - - - - - - - - - - - - - - - - - - + 1行组(0.00秒)mysql > SELECT *从电话簿电话= ' 79128008001 ';+ - - - - - - - - - - - - - - - - - - - - - - - - | + |名字电话| + - - - - - - - - - - - - - - - - - - - - - - - - +酒吧| | + 7-912-800-80-01 | + + - - - - - - - - - - - - - - - - - - - - - - - - + 1行组(0.00秒)mysql > SELECT *从电话簿电话= ' 7 9 1 2 8 0 0 8 0 0 1 ';+ - - - - - - - - - - - - - - - - - - - - - - - - | + |名字电话| + - - - - - - - - - - - - - - - - - - - - - - - - +酒吧| | + 7-912-800-80-01 | + + - - - - - - - - - - - - - - - - - - - - - - - - + 1行组(0.00秒)