利用MySQL数据库来处理中英文取首字母排序
2015-12-14 00:00
337 查看
摘要: 很久都没有写博客了, 但是也积攒了了很多的问题, 下次找个时间一起整理一下, 然后记录下来, 以备不时之需.
我们的联系人列表经常会有按照首字母排序的需求. 这个很方便, 很清晰, 如果不说性能如何, 就像让数据库来做呢? 其实MySQL是支持的.
我们的联系人列表经常会有按照首字母排序的需求. 这个很方便, 很清晰, 如果不说性能如何, 就像让数据库来做呢? 其实MySQL是支持的.
DELIMITER $$
CREATE
FUNCTION
`fristPinyin`(P_NAME
VARCHAR
(255))
RETURNS
varchar
(255) CHARSET utf8
DETERMINISTIC
BEGIN
DECLARE
V_RETURN
VARCHAR
(255);
DECLARE
V_BOOL
INT
DEFAULT
0;
DECLARE
FIRST_VARCHAR
VARCHAR
(1);
SET
FIRST_VARCHAR=
left
(
CONVERT
(P_NAME USING gbk),1);
SELECT
FIRST_VARCHARREGEXP
'[a-zA-Z]'
INTO
V_BOOL;
IF V_BOOL= 1
THEN
SET
V_RETURN= FIRST_VARCHAR;
ELSE
SET
V_RETURN= ELT(INTERVAL(CONV(HEX(
left
(
CONVERT
(P_NAME USING gbk),1)),16,10),
0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,
0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,
0xC8F6,0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1),
'A'
,
'B'
,
'C'
,
'D'
,
'E'
,
'F'
,
'G'
,
'H'
,
'J'
,
'K'
,
'L'
,
'M'
,
'N'
,
'O'
,
'P'
,
'Q'
,
'R'
,
'S'
,
'T'
,
'W'
,
'X'
,
'Y'
,
'Z'
);
END
IF;
RETURN
V_RETURN;
END
$$
DELIMITER;
相关文章推荐
- mysql给数据统计做排名
- mysql索引
- Navicat for MySQL工具中大小写敏感的情况下表名称会出现变小写
- MySQL管理多个实例的方法 推荐
- Mysql数据库常用命令
- hive partition 动态分区时字符乱码,无法删除
- Mysql存储引擎对比之:innoDB与MyISAM
- MySQL开启远程登录权限
- MySQL Master_Slave主从配置
- mysql密码mac
- kettle spoon中“表输入”到“表输出”的乱码问题
- zabbix安装指南
- MySQL 存储过程那点事儿
- Mysql数据库默认编码修改。
- MySQL安装步骤
- 【mysql】关于悲观锁
- MySQL PreparedStatement执行时传入的中文是乱码
- mysql中替换字符串(正则) 模糊
- Kettle连接Mysql数据库异常
- MySQL Proxy