mysql姓氏笔画排序_php根据姓氏笔画排序怎么做
时间: 2023-07-31 21:10:18 浏览: 44
根据姓氏笔画排序可以通过以下 SQL 语句实现:
```sql
SELECT name FROM table_name ORDER BY LENGTH(SUBSTRING_INDEX(name, '', 1)), name;
```
其中 `table_name` 为你的表名,`name` 为你要排序的字段名。这条 SQL 语句的排序规则是:先按照姓氏的笔画数目排序,笔画数目少的排在前面;在笔画数目相同的情况下,再按照名字的字典序进行排序。
需要注意的是,这个 SQL 语句只适用于姓氏为一个字的情况。如果姓氏为两个字或以上,需要对 `SUBSTRING_INDEX` 函数的第二个参数进行修改,以获取正确的笔画数目。
相关问题
mysql按姓氏笔画排序
要按照姓氏笔画排序,需要使用一些中文分词库,这里我推荐使用中文分词库 jieba。具体步骤如下:
1. 首先安装 jieba 分词库,可以使用 pip install jieba 命令进行安装。
2. 创建一个 MySQL 的自定义函数,利用 jieba 分词库将姓氏和名字分开,然后再按照姓氏笔画排序。下面是一个示例的自定义函数:
```sql
DELIMITER $$
CREATE FUNCTION `pinyin_sort`(input VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
BEGIN
DECLARE last_name VARCHAR(255);
DECLARE first_name VARCHAR(255);
DECLARE result VARCHAR(255);
SET last_name = SUBSTRING_INDEX(input, ' ', 1);
SET first_name = SUBSTR(input, LENGTH(last_name) + 2);
SET result = CONCAT_WS(' ', last_name, first_name);
RETURN result;
END$$
DELIMITER ;
```
3. 使用自定义函数进行查询,例如:
```sql
SELECT name FROM employees ORDER BY pinyin_sort(name);
```
上述查询语句会按照姓氏笔画排序返回 employees 表中的姓名。
mysql通过汉字笔画排序
MySQL 中没有直接支持汉字笔画排序的函数,但可以通过 `CONVERT()` 函数将汉字转换为拼音再进行排序。
具体做法是使用 `CONVERT()` 函数将汉字转换为拼音,然后使用 `LENGTH()` 函数计算拼音的长度,即为汉字的笔画数目,最后按照笔画数目进行排序。
以下是一个示例 SQL 语句:
```sql
SELECT name FROM table_name ORDER BY LENGTH(CONVERT(name USING GBK)), CONVERT(name USING GBK);
```
其中,`table_name` 为表名,`name` 为要排序的字段名。这个排序规则是:先按照汉字的笔画数目排序,笔画数目少的排在前面;在笔画数目相同的情况下,再按照拼音的字典序进行排序。
需要注意的是,这个 SQL 语句只适用于 GBK 编码的环境下。如果你使用的是 UTF-8 编码,需要将 `GBK` 改为 `UTF8`。另外,由于汉字笔画数目存在争议,所以这种排序方法可能会存在一定的误差。