背景和目的

大产品就是有这么个需求,还是将name varchar(10) 的字符串按从左到右逐字进行大小匹配的,如:02,003,按从左到右匹配,就是 003需要排在02前面。

实现

mysql 正常的order by是按 ascii码 进行排序的,数字>字母>中文,这是正常排序,用order by就能实现;但特殊字符就比较特殊了,非字母数字中文就都是特殊字符;所以,需要做一通乱脑子的处理;

单字符匹配实现

示例:

select name, (

case when hex(name)

regexp'[46][1-9]|[357][0-9]|[46][a-f]|[57]a|e[4-9][0-9a-f]{4}'

then 0 else 1 end

) as sort

from user order by sort , convert(name using bgk);

解释1:匹配到非字母数字中文的内容,做sort排序,字母数字中文为null,排序优先级最高,排在上面;然后pos排序是用默认的 ascii排序;

解释2:为什么用 HEX()函数做十六进制编码?因为中文用常规的正则不能匹配到结果,起码我没匹配到结果;

解释3:为什么要把字母数字中文放在一起匹配?因为我机智啊,不然处理复杂度会更高;

多字符串实现

1、将 name varchar(10),先拆分为 10个单字符,然后再逐字进行匹配;

2、修改正则表达式,匹配多个字符:

select name, (

case when hex(name)

regexp'^([46][1-9]|[357][0-9]|[46][a-f]|[57]a|e[4-9][0-9a-f]{4})+'

then 0 else 1 end

) as sort

from user order by sort , convert(name using bgk);

参考文献:

1、https://blog.csdn.net/weixin_43203551/article/details/90380234 20200526

2、https://blog.csdn.net/u012731379/article/details/64125572 20200526

mysql 中文 特殊字符_mysql实现数字、字母、中文、特殊字符排序相关推荐

  1. php 字母数字混合排序,JavaScript_基于JS实现数字+字母+中文的混合排序方法,在上篇文章给大家介绍了JavaScr - phpStudy...

    基于JS实现数字+字母+中文的混合排序方法 在上篇文章给大家介绍了JavaScript sort数组排序方法和自我实现排序方法小结,用自己的方法实现了数字数组的排序. 当然,实际运用中,我还是会使用s ...

  2. JS判断数字/字母/中文

    原文链接:http://tieba.baidu.com/f?kz=140213674 1 JS判断数字/字母/中文   1. var reg = /^(\w|[\u4E00-\u9FA5])*$/; ...

  3. js 中 中文、空格、数字、字符串混合排序

    最近有个需求,需要对后台的数组对象按照某个属性进行排序,属性值可能是 中文.字符串.数字.特殊字符.空字符串,网上大部分都只是针对某一个类型进行排序,在参考这篇博客的基础之上https://blog. ...

  4. mysql a-z排序_mysql实现首字母从A-Z排序

    1.常规排序ASC DESC ASC 正序 DESC倒叙 - 此处不用多讲 2.自定义排序 自定义排序是根据自己想要的特定字符串(数字)顺序进行排序.主要是使用函数 FIELD(str,str1,st ...

  5. mysql首字母排序_mysql实现首字母从A-Z排序

    1.常规排序ASC DESC ASC 正序 DESC倒叙 -- 此处不用多讲 2.自定义排序 自定义排序是根据自己想要的特定字符串(数字)顺序进行排序.主要是使用函数 FIELD(str,str1,s ...

  6. 正则表达必须包含数字字母和特殊字符

    下面给大家介绍下JS正则表达式 必须包含数字.字母.特殊字符 js正则表达式要求: 必须包含数字.英文字母.特殊符号且大于等于8位 特殊符号包括: ~!@#$ 下面给大家介绍下JS正则表达式 必须包含 ...

  7. android验证数字字母和特殊字符,正则表达式必须包含字母数字和特殊字符

    正则表达式要实现必须包含字母数字和特殊字符,那么,我们就必须判断该字符串中: 1. 包含字母 2. 包含数字 3. 包含特殊字符 为了简化问题,这里对特殊字符做下限定,指:_-@&=,大家在实 ...

  8. Python 正则表达式+字符串分割(数字/字母/汉字/特殊字符)

    1. 基本知识 函数 说明 \u0041-\u005a 大写字母unicode范围 \u0061-\u007a 小写字母unicode范围 \u0041-\u007a 英文字母unicode范围 \u ...

  9. mysql like 中文版_MySQL使用like查询中文不准确的解决方法

    Mysql数据库like查询中文出现不准确的解决方法,中文检索有时候有点蛋疼,Mysql数据库like查询中文有时候会出现不准确.而且,在进行like检索时,有时候会返回一些与查询词不相关的记录,如查 ...

最新文章

  1. 邮件服务器 Postfix+ Cyrus-SASL+cyrus-IMAPD+日常维护
  2. 迅为linux下串口,迅为iMX6UL开发板多路串口开发板接口详解
  3. java基础—Hashtable,HashMap,TreeMap的差别
  4. windows下自制动画层引擎 - 放两个demo
  5. 使用jq的toggle函数实现全选功能遇到的问题
  6. 蚊子132 各方人员都“照顾”到位则业务会很乐观
  7. python怎么读写文件-python怎么读写文件操作
  8. viewUrl 终结者
  9. 《阿里云服务器教程1》:如何购买阿里云服务器
  10. IDC基础知识-名词解释
  11. python自动化:uiautomation、pyautogui操作会计记账系统(2)处理收支明细表
  12. 人的感性是否也属于理性的一种
  13. 【Redis】Redis数据库
  14. 计算机毕业设计之java+ssm学生网上请假系统
  15. 自动化测试——执行javaScript脚本
  16. C++运算符重载函数
  17. Linux系统中rpm命令安装软件,报错:This program may be freely redistributed under the terms of the GNU GPL
  18. 关于音箱的鉴别与选择
  19. LOJ 6436 [PKUSC 2018] 神仙的游戏
  20. 网吧加油站_网吧加油站常见的三个问题解答

热门文章

  1. IOS获取当前App的基本信息
  2. 五子棋游戏程序创作过程(C语言)
  3. SkyDrive APIs——搭建环境(1)
  4. 云队友丨二次创业成功,何小鹏如何认知升级?
  5. 使用Python写的翻译工具
  6. windows 2008 r2组策略安装软件
  7. A*寻路算法的最简单通俗讲解
  8. 车市冷车道 这6款紧凑车苦坐板凳寻伯乐(二)
  9. 三菱数控怎么用计算机,三菱数控RS232C接口应用
  10. 计算机Excel建立簇状圆锥图,excel2010簇状圆锥图教程