zoukankan      html  css  js  c++  java
  • mysql按照首字母对汉字进行排序

    对汉字内容的字段进行排序,用order by 字段  是不行的,因为mysql编码一般是UTF8的,而要相对汉字进行排序必须用GBK编码。

    先看下平常的order by

    新建test表

    CREATE TABLE `test` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

    插入数据

    INSERT INTO `test`.`test`(`id`, `name`) VALUES (1, '你好');
    INSERT INTO `test`.`test`(`id`, `name`) VALUES (2, '哈哈');
    INSERT INTO `test`.`test`(`id`, `name`) VALUES (3, '财务');
    INSERT INTO `test`.`test`(`id`, `name`) VALUES (4, '思想');
    INSERT INTO `test`.`test`(`id`, `name`) VALUES (5, '大海');
    INSERT INTO `test`.`test`(`id`, `name`) VALUES (6, '阿里巴巴');
    INSERT INTO `test`.`test`(`id`, `name`) VALUES (7, '秘密');
    INSERT INTO `test`.`test`(`id`, `name`) VALUES (8, '百度');
    INSERT INTO `test`.`test`(`id`, `name`) VALUES (9, '嘻嘻');

    按照name字段正序排列结果:

     可以看到排序错误

    下面有两种方式可以进行按照首字母进行汉字排序:

    1、将字段设置为GBK编码

    先查看之前创建的字段编码为

     现在修改为gbk

    ALTER TABLE `test`.`test` 
    MODIFY COLUMN `name` varchar(255) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL AFTER `id`

     再次进行排序

     成功!

    2、字段编码还是用utf8,但是查询的时候通过sql将字段进行GBK编码(推荐)

    下面把字段编码改回utf8

    ALTER TABLE `test` 
    MODIFY COLUMN `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL AFTER `id`

    然后通过下面的sql查询

    SELECT * FROM test ORDER BY CONVERT(name USING 'gbk')

    结果如下:

    成功!

  • 相关阅读:
    java web开发中会遇到的异步执行方案
    MySQL中进行树状所有子节点的查询
    node.js ----NPM使用介绍
    Node.js--学习笔记
    node.js介绍及Win7环境安装测试(转)
    Jmeter中Websocket协议支持包的使用(转)
    jmeter---将回应数据写入到文件
    JMeter 插件 Json Path 解析 HTTP 响应 JSON 数据(转)
    python + Pyglet ---播放视频
    转 RTSP客户端模拟器(TCP方式,Python实现)
  • 原文地址:https://www.cnblogs.com/java-spring/p/14230876.html
Copyright © 2011-2022 走看看