mysql查询按照查询名字拼音首字母排序
第一步,先创建一个表插入几条数据
/*
Navicat MySQL Data TransferSource Server : localhost5.7
Source Server Version : 50726
Source Host : localhost:3306
Source Database : dygafanseconomyTarget Server Type : MYSQL
Target Server Version : 50726
File Encoding : 65001Date: 2019-12-12 16:30:01
*/SET FOREIGN_KEY_CHECKS=0;-- ----------------------------
-- Table structure for dygafans_fans
-- ----------------------------
DROP TABLE IF EXISTS `dygafans_fans`;
CREATE TABLE `dygafans_fans` (`id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键id',`user_id` bigint(32) NOT NULL COMMENT '用户id',`fans_phone_num` varchar(32) DEFAULT NULL COMMENT '粉丝手机号',`share_id` int(11) NOT NULL COMMENT '共享行业id',`fans_name` varchar(32) DEFAULT NULL COMMENT '真实姓名',`fans_alias` varchar(32) DEFAULT NULL COMMENT '昵称',`address` varchar(64) DEFAULT NULL COMMENT '地址',`sex` int(1) unsigned DEFAULT '0' COMMENT '性别,0未知,1男,2女,3保密',`fans_photo_url` varchar(128) DEFAULT NULL COMMENT '头像URL',`status` varchar(32) DEFAULT NULL COMMENT '状态:1-开通,2-关闭',`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`) USING BTREE,UNIQUE KEY `fans_phone_num` (`fans_phone_num`,`share_id`) USING BTREE COMMENT '手机号,行业不能重复',KEY `ind_dygafansfans_userid` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='粉丝表';-- ----------------------------
-- Records of dygafans_fans
-- ----------------------------
INSERT INTO `dygafans_fans` VALUES ('1', '1', '17112345454', '1', '二狗', '二狗', '农信大厦18楼', '0', 'http://192.168.130.132/file/group1/M00/00/0C/wKiCSV3oroSAORwRAAM61UUASNg722.jpg', '1', '2019-12-10 16:45:45', '2019-12-11 10:21:56');
INSERT INTO `dygafans_fans` VALUES ('2', '1', '17112345678', '2', '啊三', '张三', '农信大厦18楼', '0', 'http://192.168.130.132/file/group1/M00/00/0C/wKiCSV3oroSAORwRAAM61UUASNg721.jpg', '1', '2019-12-10 16:46:03', '2019-12-11 10:34:37');
INSERT INTO `dygafans_fans` VALUES ('3', '1', '17123455432', '2', '王五', '王五', '农信大厦19楼', '0', 'http://192.168.130.132/file/group1/M00/00/0C/wKiCSV3oroSAORwRAAM61UUASNg723.jpg', '1', '2019-12-10 16:46:49', '2019-12-10 16:46:55');
INSERT INTO `dygafans_fans` VALUES ('4', '1', '17123438907', '1', '李海吵', '丑比', '农信大厦20楼', '0', 'http://192.168.130.132/file/group1/M00/00/0C/wKiCSV3oroSAORwRAAM61UUASNg721.jpg', '1', '2019-12-11 10:42:27', '2019-12-11 10:42:27');
INSERT INTO `dygafans_fans` VALUES ('5', '1', '123456789', '1', '李小龙', '二狗', '农信大厦20楼', '0', '1', '1', '2019-12-11 20:25:16', '2019-12-12 11:59:38');
INSERT INTO `dygafans_fans` VALUES ('6', '2', '17213245678', '1', '李小龙', '李小龙', '农信大厦20楼', '0', '1', '1', '2019-12-12 11:59:24', '2019-12-12 11:59:41');
第二步,创建pinyin自定义函数
CREATE DEFINER=`root`@`%` FUNCTION `pinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
BEGINDECLARE V_COMPARE VARCHAR(255);DECLARE V_RETURN VARCHAR(255);DECLARE V_FPinyin VARCHAR(2);DECLARE I INT;SET I = 1;SET V_RETURN = '';while I < LENGTH(P_NAME) doSET V_COMPARE = SUBSTR(P_NAME, I, 1);IF (V_COMPARE != '') THENSET V_FPinyin = fristPinyin(V_COMPARE);IF (V_FPinyin != '') THEN SET V_RETURN = CONCAT(V_RETURN, V_FPinyin);END IF;END IF;SET I = I + 1;end while;IF (ISNULL(V_RETURN) or V_RETURN = '') THENSET V_RETURN = P_NAME;END IF;RETURN V_RETURN;
END
第三步,创建fristPinyin自定义函数
CREATE DEFINER=`root`@`%` FUNCTION `fristPinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
BEGINDECLARE V_RETURN VARCHAR(255);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');RETURN V_RETURN;
END
全部创建好以后为这样
第四步,拼写sql脚本
- 先查询一下所有的数据。
SELECTid,user_id,fans_phone_num,share_id,fans_name,fans_alias,address,sex,fans_photo_url,`STATUS`,create_time,update_time
FROMdygafans_fans
ORDER BYCONVERT (fans_name USING gbk) ASC;
- 在按照要求来查询一下
SELECTid,user_id,fans_phone_num,share_id,fans_name,LEFT (pinyin(fans_name), 1) AS firstName,fans_alias,address,sex,fans_photo_url,`STATUS`,create_time,update_time
FROMdygafans_fans
ORDER BYCONVERT (fans_name USING gbk) ASC;
新增了一列firstName
,按照拼音来排序。
mysql查询按照查询名字拼音首字母排序相关推荐
- mysql表中文字段提取拼音首字母最便捷实现,中文按拼音首字母排序
mysql表中文字段提取拼音首字母 SELECT a.提取字段, IFNULL(ELT(INTERVAL (CONV(HEX(left(CONVERT(a.提取字段 USING gbk), 1)), ...
- mysql 查询汉字的全拼音以及查询各个汉字的拼音首字母
查询汉字的全拼音 -- 创建汉字拼音对照临时表 CREATE TABLE IF NOT EXISTS `t_base_pinyin` (`pin_yin_` varchar(255) CHARACTE ...
- MySQL中文无法按照拼音首字母排序解决方法convert(name USING gbk)
问题如下: 使用默认的order by函数无法对中文数据按照首字母进行排序 SELECT * FROM `test_table` ORDER BY company_name,reply_room_na ...
- 中文按拼音首字母排序的C++实现方案
先介绍下背景,最近有个需求,需要将用户的好友列表按照昵称的拼音首字母排序,类似于手机电话簿的联系人.一开始建议让终端同学去做这点,毕竟终端现有的电话簿模块已经实现了,不过终端同学说电话簿是系统组件,移 ...
- Java 按照拼音首字母排序
默认的 Collection.sort() 是按照 ASCII 码排序, 不过, 有第二个重载方法, 第二个参数可以传入 Comparator 对象 java.text.Collator 可以用于本地 ...
- php 数组 按拼音首字母 排序 并分组
php 数组 按拼音首字母 排序 并分组 2018年09月30日 11:18:59 王汪汪wsq 阅读数 995 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csd ...
- [转载]ExtJS中grid按照中文拼音首字母排序、改变行背景、列背景、静态数据分页不再困难...
代码 1 本示例主要使用到了静态数据分页 Ext.data.PagingMemoryProxy组件.Ext.PagingToolbar分页条.viewConfig的getRowClass 方法.列co ...
- 按照姓名拼音首字母排序
按照姓名拼音首字母排序 https://blog.csdn.net/YezhanCHN/article/details/119880298
- 中文拼音首字母排序比较器
说明 主要是之前和别人讨论排序问题,当时碰到的问题是,需要按照中文第一个字的拼音首字母排序,百度发现自带的比较器 Collator.getInstance(Locale.CHINA) ,但是使用和追源 ...
- 汉字按拼音首字母排序
按拼音首字母排序 localeCompare() 方法返回一个数字来指示一个参考字符串是否在排序顺序前面或之后或与给定字符串相同. 返回一个数字表示是否 引用字符串 在排序中位于 比较字符串 的前面, ...
最新文章
- HTML实现折现图完整源码及效果图
- 连接网络计算机密码错误,局域网电脑连接提示网络错误怎么解决
- auxprop mysql_Postfix 反垃圾过滤
- RequiredFieldValidator----验证控件不起作用
- uoj22 外星人(dp)
- linux postgresql默认安装目录,PostgreSQL for Linux 安装方式
- 蓝桥杯基础模块6_2:定时器进阶
- windows隐藏python运行时的终端
- 接上文 ,解决 虚拟机VM,U盘(磁盘)装有系统,将其中系统安装到另外一块磁盘的具体操作
- matlab的try函数,matlab – 是否可以在没有try块的情况下测试函数句柄?
- Pyalgotrade量化交易回测框架
- 理解Java对象序列化——Serializable接口
- 贴吧备份到本地浏览html,获取贴吧对应页html及写入文件
- webstrom 里面使用github
- 牛客Wannafly挑战赛10 A.小H和迷宫
- winfrom 窗口起始位置为屏幕中央
- linux上传文件夹工具,[转] psftp(linux简易上传上载工具)的用法及常用命令
- 如何把HTML背景图片变透明,photoshop怎样把图片背景变透明
- 网络历史之金融投资三剑客0
- mysql笔试题15道
热门文章
- 系统分析师考试大纲2009
- php 判断是否为中文,php判断是否为中文正则表达式大全
- UEFI开发与调试---ImageHandle和ControllerHandle
- DirectShow 开启摄像头
- 计算机无法搜索照片,电脑上照片查看器无法打开照片
- 电商正当时 盘点八款开源网店系统
- html5 右侧客服代码,简洁右侧栏客服代码
- win10提示“应用程序无法正常启动 0xc0150002”怎么办
- 应用程序无法正常启动 0xc0150002
- 乱OL, Ran OL[Ran2_Online]加解密工具源码