mysql姓氏笔画排序_php根据姓氏笔画排序怎么做
时间: 2023-07-31 19:09:56 浏览: 75
可以使用 MySQL 中的 `ORDER BY` 子句来按照姓氏笔画排序。具体实现可以按照以下步骤进行:
1. 首先需要将姓氏笔画数据存储在数据库中。可以创建一个 `surname` 表,其中包含以下字段:`id`(主键)、`name`(姓氏)、`strokes`(姓氏的笔画数)。
2. 在查询时,使用 `ORDER BY` 子句对 `surname` 表进行排序,排序字段为 `strokes`,排序方式为升序(或降序,根据需求而定)。
具体 SQL 语句如下:
```sql
SELECT * FROM surname ORDER BY strokes ASC;
```
这将返回一个按照姓氏笔画排序的结果集,其中笔画数最少的姓氏排在前面。
相关问题
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`。另外,由于汉字笔画数目存在争议,所以这种排序方法可能会存在一定的误差。