sql数据库版本号_怎么查看sql版本

sql数据库版本号_怎么查看sql版本SQL 语句直接对内容为版本号格式的字段进行排序时,排序效果通常不是最终想要的效果,因为最终需要的效果,是需对版本号里的每一段(通常以小数点分隔)按数值进行排序。 解决这个问题,主要借助 SUBSTR

SQL 版本号排序

SQL 语句直接对内容为版本号格式的字段进行排序时,排序效果通常不是最终想要的效果,因为最终需要的效果,是需对版本号里的每一段(通常以小数点分隔)按数值进行排序。

解决这个问题,主要借助 SUBSTRING_INDEX(str, delim, count) 函数分段提取,再结合结合 CAST() 函数进行类型转换,转换成数值并排序。

SUBSTRING_INDEX 函数从 str 的开始位置取值,由 delim 指定分隔符,取第 count 个分隔符前面部分的内容,其中 count 为负数时,从末尾取值。在嵌套使用的时候,可以指定单独取原始顺序的第2段、第3段等,可以取任意连续1至N段。

例如:

SELECT SUBSTRING_INDEX("192.168.10.15", ".", 1) AS v
UNION SELECT SUBSTRING_INDEX("192.168.10.15", ".", 2)
UNION SELECT SUBSTRING_INDEX("192.168.10.15", ".", 3)
UNION SELECT SUBSTRING_INDEX("192.168.10.15", ".", 4);

效果:

sql数据库版本号_怎么查看sql版本

 

 

嵌套使用 SUBSTRING_INDEX() 函数,并结合 CAST() 函数将结果转换为数值排序:

SELECT v, 
CAST(SUBSTRING_INDEX(v, ".", 1) AS UNSIGNED) AS v1, 
CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(v, ".", 2), ".", -1) AS UNSIGNED) AS v2, 
CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(v, ".", 3), ".", -1) AS UNSIGNED) AS v3, 
CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(v, ".", 4), ".", -1) AS UNSIGNED) AS v4
FROM (
    SELECT "6.3.5.5" AS v
    UNION SELECT "10.1.1.8"
    UNION SELECT "1.2.3.17"
    UNION SELECT "1.12.3.6"
    UNION SELECT "1.12.250.5"
    UNION SELECT "256.12.3.4"
) AS t 
ORDER BY v1 DESC, v2 DESC, v3 DESC, v4 DESC;

效果:

sql数据库版本号_怎么查看sql版本

若版本号只有3段的,则可以去掉上述 v4 部分。

另外,也可以不需要添加到查询的列里,直接放在 ORDER BY 子句中:

SELECT v
FROM (
    SELECT "6.3.5.5" AS v
    UNION SELECT "10.1.1.1"
    UNION SELECT "1.2.3.4"
    UNION SELECT "1.12.3.4"
    UNION SELECT "1.12.250.4"
    UNION SELECT "256.12.3.4"
) AS t 
ORDER BY 
CAST(SUBSTRING_INDEX(v, ".", 1) AS UNSIGNED) DESC, 
CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(v, ".", 2), ".", -1) AS UNSIGNED) DESC, 
CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(v, ".", 3), ".", -1) AS UNSIGNED) DESC, 
CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(v, ".", 4), ".", -1) AS UNSIGNED) DESC;

效果:

sql数据库版本号_怎么查看sql版本

 

 

 另外,结合 INET_ATON(str) 函数可以把输入参数按IP地址格式排序,但是如果存在其中一段的数值超过255的记录,则排序对该记录不生效或结果不符合预期;若可以保证每一段均不超过255,则可以直接使用该函数辅助排序,省事。

原文地址:https://www.cnblogs.com/tods/archive/2022/06/21/16396714.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5091.html

(0)
上一篇 2023-05-23
下一篇 2023-05-23

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注