数据库中a表字段b由下划线组成的字符串,如1-1-1,1-1-2,现要根据字符串中的数字进行升序排列
时间: 2024-05-19 10:11:12 浏览: 36
可以使用ORDER BY和CAST函数来实现:
SELECT b FROM a ORDER BY CAST(SUBSTRING_INDEX(b, '-', 1) AS UNSIGNED), CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(b, '-', 2), '-', -1) AS UNSIGNED), CAST(SUBSTRING_INDEX(b, '-', -1) AS UNSIGNED);
上述语句将a表中的b字段按照数字升序排列。其中,SUBSTRING_INDEX函数用来获取字符串中的数字,CAST函数用来将字符串转换为数字类型,ORDER BY用来排序。
解释一下子字符串函数:
- SUBSTRING_INDEX(str,delim,count):返回str中第count个delim(分隔符)之前或之后的所有字符。如果count是正数,则返回第count个delim之前的所有字符;如果count是负数,则返回最后count个delim之后的所有字符。例如SUBSTRING_INDEX('1-1-2', '-', 2) 返回'1-1'。
- SUBSTRING_INDEX(str,delim,-1):返回str中最后一个delim之后的所有字符。例如SUBSTRING_INDEX('1-1-2', '-', -1) 返回'2'。
上述语句中的三个CAST函数分别用来将第一段数字、第二段数字和第三段数字转换为数字类型。这样就可以按照数字升序排列了。