mysql 按中文字段排序

当我们使用 MySQL 数据库存储中文数据时,可能需要对中文字段(例如姓名、地区等)进行排序操作。这时候,在默认情况下,MySQL 的排序规则是按照 ASCII 码值进行排序,无法对中文排序得到正确的结果。因此,我们需要采用特定的排序方法,才能正确地对中文字段进行排序。

下面是按中文字段排序的完整攻略:

1. 修改表的默认字符集

中文排序需要使用utf8mb4字符集,在创建表时需要使用utf8mb4字符集,如果已经创建好的表需要修改设备字符集,需要使用alter table命令。

假设我们需要对数据库 testdb 中的表 students 进行操作,先修改表的默认字符集:

ALTER TABLE students DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

这样,students 表的字符集就已经修改为 utf8mb4 了,但排序规则还是使用默认的 utf8mb4_general_ci

2. 修改排序规则

默认的 utf8mb4_general_ci 排序规则是根据 Unicode 排序的,对于中文排序会产生问题。因此,我们需要使用特定的排序规则。在 MySQL 中,支持多种中文排序规则,比如 utf8mb4_unicode_ciutf8mb4_unicode_520_ciutf8mb4_zh_cn_ci 等。

utf8mb4_unicode_ci 排序规则为例,以下是修改表中某个字段的排序方法:

ALTER TABLE students MODIFY name VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

这样,students 表中的 name 字段就已经修改为 utf8mb4_unicode_ci 排序规则。

示例一:

假设 students 表中有以下数据:

id name age
1 张三 23
2 李四 20
3 王五 21
4 赵六 22

按照中文字段 name 排序操作:

SELECT * FROM students ORDER BY name COLLATE utf8mb4_unicode_ci;

排序结果:

id name age
1 张三 23
2 李四 20
4 赵六 22
3 王五 21

注意:排序操作中需要加上 COLLATE utf8mb4_unicode_ci 参数,这样 MySQL 才会按照 utf8mb4_unicode_ci 规则进行排序。

示例二:

假设 students 表中有以下数据:

id name age
1 大学生会 23
2 大学生 20
3 普通大学生 21
4 大学生活动中心 22

使用 utf8mb4_unicode_ci 排序规则排序操作:

SELECT * FROM students ORDER BY name COLLATE utf8mb4_unicode_ci;

排序结果:

id name age
1 大学生 23
4 大学生活动中心 22
3 普通大学生 21
2 大学生会 20

可以看到,utf8mb4_unicode_ci 排序规则可以正确地进行中文排序,使结果符合预期。

综上所述,按中文字段排序需要先修改表的字符集和排序规则,然后使用 COLLATE 参数进行排序操作。针对不同的排序需求,可以使用不同的中文排序规则。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql 按中文字段排序 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • iOS12GM版和正式版、测试版、公测版之间区别有哪些?

    针对“iOS12GM版和正式版、测试版、公测版之间区别有哪些?”这个话题,我可以提供以下详细讲解: iOS版本发布 iOS正式版 iOS正式版是指经过各种测试和开发周期后,对公众发布的、用于手机和平板电脑等设备上的iOS系统的最终版本。iOS正式版的发布时间通常是在苹果公司举行的秋季新品发布会上,会发布最新款的iPhone和iOS系统版本。iOS正式版的版本…

    other 2023年6月26日
    00
  • android表格布局(tablelayout)

    Android表格布局(TableLayout)攻略 在Android中,表格布局(TableLayout)是一种常用的布局方式,可以用于显示数据表格、菜单等。本攻略将详细介绍如何使用表格布局,包括表格布局的基本结构、属性设置和示例说明。 基本结构 表格布局的基本结构如下: <TableLayout android:layout_width=&quot…

    other 2023年5月6日
    00
  • python-为什么cv2.imwrite()更改图片的颜色?

    当使用cv2.imwrite()函数保存图像时,有时候会发现图像的颜色发生了变化。这种情况可能是由以下原因导致的: 颜色空间不匹配:cv2.imwrite()函数默认使用BGR颜色空间保存图,而其他些库如PIL使用RGB颜色空间。如果您使用cv2.imread()函数读取了一个RGB图像,并使用cv2.imwrite()函数它,则发现图像的颜色发生了变化。解…

    other 2023年5月9日
    00
  • php中如何给日期加上一个月/天

    以下是PHP中如何给日期加上一个月/天的完整攻略: PHP中给日期加上一个月/天 在PHP中,您可以使用strtotime()和date()函数来给日期加上一个月/天。以下是实现此效果的步骤: 使用strtotime()函数将日期转换时间戳。 php $date = ‘2023-05-07’; $timestamp = strtotime($date); 在…

    other 2023年5月7日
    00
  • 浅析MySQL的lru链表

    《浅析MySQL的LRU链表》是一篇介绍MySQL的缓存机制的文章,其中讲到了LRU链表的概念和在MySQL中的应用。以下是对该文章的详细讲解和完整攻略。 什么是LRU链表 LRU:Least Recently Used,最近最少使用。 LRU链表:对于一组数据,每当数据被访问时都将最近访问的数据放在链表头部,而链表尾部则是最近最少使用的数据。当链表满时,将…

    other 2023年6月27日
    00
  • CSS选择器种类、优先级与匹配原理详解

    CSS选择器种类、优先级与匹配原理详解 1. CSS选择器种类 CSS选择器是用来选择HTML或XML文档中需要应用样式的元素的一种方式。下面介绍一些常见的CSS选择器种类: 1.1 元素选择器(Element Selector) 元素选择器通过元素名称来选择元素。比如,p选择器选择所有的<p>元素。 p { color: red; } 1.2 …

    other 2023年6月28日
    00
  • JavaScript实现判断图片是否加载完成的3种方法整理

    下面是详细讲解“JavaScript实现判断图片是否加载完成的3种方法整理”的攻略。 前言 在前端开发中,图片加载是个很常见的问题。有时候我们需要在图片加载完成后执行某个操作,或者需要知道图片是否加载出错。那么如何在JavaScript中实现这个功能呢?这篇文章将介绍3种实现方法,并进行详细讲解。 方法一:onload事件 可以通过给img元素绑定onloa…

    other 2023年6月25日
    00
  • Unix系统中文件管理和文件权限设置教程

    Unix系统中文件管理和文件权限设置教程 文件管理基础 Unix系统中的文件可以分为普通文件和目录文件两种,二者的区别在于目录文件可包含多个文件和子目录文件。Unix系统中,每个文件和目录都有一个唯一的路径描述符,用于指定文件或目录的位置及名称。 文件和目录名称 Unix系统中的文件和目录名称可以是任意字符,但通常建议只使用字母、数字和少数特殊字符(如“-”…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部