添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

sql语句为:

select id,dict_name,type_code from t_dictionary  where type_code='GRADE' ORDER BY `dict_name`;

排序效果如下:

因为字符串排序是先比较字符串第一个字符的大小。而不是像int型比较整个数字的大小。要想用字符串数据排成整型排序的效果,可以采用如下三种方式:

select id,dict_name,type_code from t_dictionary  where type_code='GRADE' ORDER BY `dict_name`*1;
select id,dict_name,type_code from t_dictionary  where type_code='GRADE' ORDER BY dict_name+0;
select id,dict_name,type_code from t_dictionary  where type_code='GRADE' ORDER BY CAST(dict_name AS DECIMAL);

效果图均为:

记录下来,收获感比较强,积累成就感。

若还有其他的实现方式,可以留言交流~~

参考文章:

https://www.cnblogs.com/yako/archive/2012/03/01/2375584.html

http://database.51cto.com/art/201011/235318.htm

mysql中对字符串排序,字符串中有数字有汉字,想按数字的大小来进行排序。仅仅用order by排序,效果不是想要的。        sql语句为:select id,dict_name,type_code from t_dictionary where type_code='GRADE' ORDER BY `dict_name`;        排序效果如下:
MySQL 对中文进行 排序 详解 MySQL 默认只支持对日期、时间和英文 字符串 进行 排序 ,如果对中文进行order by很可能得不到想要的结果,如下面的查询并不会按我们所想的根据汉字的拼音进行 排序 : SELECT * from user order by user_name; 如果相对中文进行 排序 的话,可以使用CONVERT(coloum_name USING GBK)将中文转为GBK编码形式,然后再 排序 ,就可以实现根据汉子的拼音进行 排序 : SELECT * from user order by CONVERT(user_name USING GBK); 感谢阅读,希望能帮助到大家,谢谢大家对本
如果所有参数均为非二进制 字符串 ,则结果为非二进制 字符串 。 如果自变量中含有任一二进制 字符串 ,则结果为一个二进制 字符串 。 一个数字参数被转化为与之相等的二进制 字符串 格式;若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col) MySQL 的concat函数可以连接一个或者多个 字符串 ,如 mysql > select concat('10'); +--------------+ | concat('10') | +--------------+ | 10 | +--------------+ 1 row in set (0.00 sec) mysql > select concat('11','22','33'); +------------------------+ | concat('11','22','33') | +------------------------+ | 112233 | +------------------------+ 1 row in set (0.00 sec) MySQL 的concat函数在连接 字符串 的时候,只要其中一个是NULL,那么将返回NULL mysql > select concat('11','22',null); +------------------------+ | concat('11','22',null) | +------------------------+ | NULL | +------------------------+ 1 row in set (0.00 sec) MySQL 中concat_ws函数 使用方法: CONCAT_WS(separator,str1,str2,...) CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个 字符串 之间。分隔符可以是一个 字符串 ,也可以是其它参数。 如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。 如连接后以逗号分隔 mysql > select concat_ws(',','11','22','33'); +-------------------------------+ | concat_ws(',','11','22','33') | +-------------------------------+ | 11,22,33 | +-------------------------------+ 1 row in set (0.00 sec) 和 MySQL 中concat函数不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL mysql > select concat_ws(',','11','22',NULL); +-------------------------------+ | concat_ws(',','11','22',NULL) | +-------------------------------+ | 11,22 | +-------------------------------+ 1 row in set (0.00 sec) MySQL 中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序 字段] [Separator '分隔符']) mysql > select * from aa; +------+------+ | id| name | +------+------+ |1 | 10| |1 | 20| |1 | 20| |2 | 20| |3 | 200 | |3 | 500 | +------+------+ 6 rows in set (0.00 sec) 以id分组,把name字段的值打印在一行,逗号分隔(默认) mysql > select id,group_concat(name) from aa group by id; +------+--------------------+ | id| group_concat(name) | +------+--------------------+ |1 | 10,20,20| |2 | 20 | |3 | 200,500| +------+--------------------+ 3 rows in set (0.00 sec) 以id分组,把name字段的值打印在一行,分号分隔 mysql > select id,group_concat(name separator ';') from aa group by id; +------+----------------------------------+ | id| group_concat(name separator ';') | +------+----------------------------------+ |1 | 10;20;20 | |2 | 20| |3 | 200;500 | +------+----------------------------------+ 3 rows in set (0.00 sec) 以id分组,把去冗余的name字段的值打印在一行, mysql > select id,group_concat(distinct name) from aa group by id; +------+-----------------------------+ | id| group_concat(distinct name) | +------+-----------------------------+ |1 | 10,20| |2 | 20 | |3 | 200,500 | +------+-----------------------------+ 3 rows in set (0.00 sec) 以id分组,把name字段的值打印在一行,逗号分隔,以name排倒序 mysql > select id,group_concat(name order by name desc) from aa group by id; +------+---------------------------------------+ | id| group_concat(name order by name desc) | +------+---------------------------------------+ |1 | 20,20,10 | |2 | 20| |3 | 500,200| +------+---------------------------------------+ 3 rows in set (0.00 sec) repeat()函数 用来复制 字符串 ,如下'ab'表示要复制的 字符串 ,2表示复制的份数 mysql > select repeat('ab',2); +----------------+ | repeat('ab',2) | +----------------+ | abab | +----------------+ 1 row in set (0.00 sec) mysql > select repeat('a',2); +---------------+ | repeat('a',2) | +---------------+ | aa | +---------------+ 1 row in set (0.00 sec) mysql 向表中某字段后追加一段 字符串 : update table_name set field=CONCAT(field,'',str) mysql 向表中某字段前加 字符串 update table_name set field=CONCAT('str',field) 这个函数对你也许会有很大帮助哦!!
任何计算机存储数据,都需要字符集,因为计算机存储的数据其实都是二进制编码,将一个个字符,映射到对应的二进制编码的这个映射就是字符编码(字符集)。这些字符如何 排序 呢?决定字符 排序 的规则就是 排序 规则。 查看内置字符集与比较规则 通过show charset;命令,可以查看所有的字符集。 以下仅展示了我们常用的字符集: +----------+---------------------------------+---------------------+--------+ | Charset | Descrip
本篇博客主要记录 mysql 当中关于创建数据库时候选择:字符集、 排序 规则等相关知识。通过示例直观的看出其真正作用。 目录1、前言2、 mysql 字符集2、 排序 规则2.1、 排序 规则作用2.2、 排序 测试2.2.1、utf_bin示例2.2.2、utf_general_ci示例2.3、 排序 规则设置及优先级2.3.1、 MySQL 实例级别设置2.3.2、库级别设置2.3.3、表级别设置2.3.4、列级别设置2.3.5、SQL指定设置 在创建数据库的时候会让我们去选择字符集和 排序 规则,有很多人对这方面不是很了解,
Mysql 实现字符位数及字符大小升序 排序 当我们需要对某一字段进行升序 排序 的时候,如果这个字段是字符类型的数据, 排序 时会去逐位比较字符,例如: '1234’和’21’两个 字符串 ,按照惯性思维,肯定是’21’排在前面,但是由于字符类型数据比较时会逐位比较,所以,应当是‘1234’排在前面。那么,怎么才能让‘21’排在前面呢? 有两种实现方式: 一、先进行位数 排序 ,再进行字符 排序 。 select di...
ORDER BY case WHEN spec_array like '%str_01%' then 1 WHEN spec_array like '%str_02%' then 2 WHEN spec_array like '%str_03%' then 3 ...
MySQL 中, 字符串 排序 是基于字符的 ASCII 值进行的。默认情况下, MySQL 使用字典顺序进行 字符串 排序 。下面是一些示例代码来演示如何对 字符串 进行 排序 : ```sql -- 创建一个示例表 CREATE TABLE users ( id INT, name VARCHAR(50) -- 插入示例数据 INSERT INTO users (id, name) VALUES (1, 'John'); INSERT INTO users (id, name) VALUES (2, 'Alice'); INSERT INTO users (id, name) VALUES (3, 'Bob'); INSERT INTO users (id, name) VALUES (4, 'Charlie'); -- 按照名称升序 排序 SELECT name FROM users ORDER BY name ASC; 上面的代码创建了一个名为 "users" 的表,并插入了一些示例数据。然后,使用 `ORDER BY` 子句按名称升序 排序 查询结果。 结果应该如下所示: +--------+ | name | +--------+ | Alice | | Bob | | Charlie| | John | +--------+ 需要注意的是, 字符串 排序 是区分大小写的。大写字母会在小写字母之前排列。如果你想要进行自定义 排序 (例如按照特定的顺序或规则),可以使用 `ORDER BY FIELD()` 函数或者 `CASE` 表达式来实现。