mysql 中文 特殊字符_mysql实现数字、字母、中文、特殊字符排序
背景和目的
大产品就是有这么个需求,还是将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实现数字、字母、中文、特殊字符排序相关推荐
- php 字母数字混合排序,JavaScript_基于JS实现数字+字母+中文的混合排序方法,在上篇文章给大家介绍了JavaScr - phpStudy...
基于JS实现数字+字母+中文的混合排序方法 在上篇文章给大家介绍了JavaScript sort数组排序方法和自我实现排序方法小结,用自己的方法实现了数字数组的排序. 当然,实际运用中,我还是会使用s ...
- JS判断数字/字母/中文
原文链接:http://tieba.baidu.com/f?kz=140213674 1 JS判断数字/字母/中文 1. var reg = /^(\w|[\u4E00-\u9FA5])*$/; ...
- js 中 中文、空格、数字、字符串混合排序
最近有个需求,需要对后台的数组对象按照某个属性进行排序,属性值可能是 中文.字符串.数字.特殊字符.空字符串,网上大部分都只是针对某一个类型进行排序,在参考这篇博客的基础之上https://blog. ...
- mysql a-z排序_mysql实现首字母从A-Z排序
1.常规排序ASC DESC ASC 正序 DESC倒叙 - 此处不用多讲 2.自定义排序 自定义排序是根据自己想要的特定字符串(数字)顺序进行排序.主要是使用函数 FIELD(str,str1,st ...
- mysql首字母排序_mysql实现首字母从A-Z排序
1.常规排序ASC DESC ASC 正序 DESC倒叙 -- 此处不用多讲 2.自定义排序 自定义排序是根据自己想要的特定字符串(数字)顺序进行排序.主要是使用函数 FIELD(str,str1,s ...
- 正则表达必须包含数字字母和特殊字符
下面给大家介绍下JS正则表达式 必须包含数字.字母.特殊字符 js正则表达式要求: 必须包含数字.英文字母.特殊符号且大于等于8位 特殊符号包括: ~!@#$ 下面给大家介绍下JS正则表达式 必须包含 ...
- android验证数字字母和特殊字符,正则表达式必须包含字母数字和特殊字符
正则表达式要实现必须包含字母数字和特殊字符,那么,我们就必须判断该字符串中: 1. 包含字母 2. 包含数字 3. 包含特殊字符 为了简化问题,这里对特殊字符做下限定,指:_-@&=,大家在实 ...
- Python 正则表达式+字符串分割(数字/字母/汉字/特殊字符)
1. 基本知识 函数 说明 \u0041-\u005a 大写字母unicode范围 \u0061-\u007a 小写字母unicode范围 \u0041-\u007a 英文字母unicode范围 \u ...
- mysql like 中文版_MySQL使用like查询中文不准确的解决方法
Mysql数据库like查询中文出现不准确的解决方法,中文检索有时候有点蛋疼,Mysql数据库like查询中文有时候会出现不准确.而且,在进行like检索时,有时候会返回一些与查询词不相关的记录,如查 ...
最新文章
- 邮件服务器 Postfix+ Cyrus-SASL+cyrus-IMAPD+日常维护
- 迅为linux下串口,迅为iMX6UL开发板多路串口开发板接口详解
- java基础—Hashtable,HashMap,TreeMap的差别
- windows下自制动画层引擎 - 放两个demo
- 使用jq的toggle函数实现全选功能遇到的问题
- 蚊子132 各方人员都“照顾”到位则业务会很乐观
- python怎么读写文件-python怎么读写文件操作
- viewUrl 终结者
- 《阿里云服务器教程1》:如何购买阿里云服务器
- IDC基础知识-名词解释
- python自动化:uiautomation、pyautogui操作会计记账系统(2)处理收支明细表
- 人的感性是否也属于理性的一种
- 【Redis】Redis数据库
- 计算机毕业设计之java+ssm学生网上请假系统
- 自动化测试——执行javaScript脚本
- C++运算符重载函数
- Linux系统中rpm命令安装软件,报错:This program may be freely redistributed under the terms of the GNU GPL
- 关于音箱的鉴别与选择
- LOJ 6436 [PKUSC 2018] 神仙的游戏
- 网吧加油站_网吧加油站常见的三个问题解答