時間:2023-03-17來源:系統城裝機大師作者:佚名
想要結果:
每個test_value 里面都包含 ORDER 關鍵字, 想根據這個關鍵字 前面的數字進行排序。
使用SUBSTRING_INDEX 函數
sql :
1 | SELECT ID,SUBSTRING_INDEX(test_value, "ORDER" ,1) AS NO , test_value FROM test |
結果:
sql :
1 2 3 4 5 |
select * FROM ( SELECT ID,SUBSTRING_INDEX(test_value, "ORDER" ,1) AS NO , test_value FROM test )t ORDER BY t. NO DESC |
結果并不是我們想要的:
原因,之前講過,字符串類型對應mysql排序,它是這樣排的:
所以我們需要做轉換成數字再排 。
第一種方案 :
使用 CAST函數 轉換類型
unsigned
表示無符號,不能表示小數signed
表示有符號,可以表示小數1 2 3 4 5 |
SELECT * FROM ( SELECT ID,SUBSTRING_INDEX(test_value, "ORDER" ,1) AS NO , test_value FROM test )t ORDER BY CAST (t. NO AS SIGNED) |
結果OK的:
第二種方案
排序的字符串字段值后拼接 0 ,觸發轉換成數字
sql:
1 2 3 4 5 |
SELECT * FROM ( SELECT ID,SUBSTRING_INDEX(test_value, "ORDER" ,1) AS NO , test_value FROM test )t ORDER BY t. NO +0 |
結果是OK的:
第三種方案:
CONVERT 函數 轉換類型
unsigned
表示無符號,不能表示小數signed
表示有符號,可以表示小數sql:
1 2 3 4 5 |
SELECT * FROM ( SELECT ID,SUBSTRING_INDEX(test_value, "ORDER" ,1) AS NO , test_value FROM test )t ORDER BY CONVERT (t. NO ,SIGNED) |
結果是OK的:
好了,該篇到這里吧~
2023-03-17
mariadb集群搭建---Galera Cluster+ProxySQL教程2023-03-15
Mysql存儲二進制對象數據問題2023-03-15
MySQL5.7升級MySQL8.0的完整卸載與安裝及連接Navicat的步驟打開MySQL 8.0 Command Line Client命令框輸入密碼后命令框閃退 一、輸入密碼錯誤 二、MySQL服務沒有啟動 三、my.ini文件缺失...
2023-03-15
1.關閉mysql服務 2.跳過權限驗證 3.以管理員打開另一個cmd窗口,直接輸入mysql(剛才的不要關閉) 4.修改密碼 5.刷新mysql權限,再次執行命令 6.關閉第一次打開的窗口,然后輸入quit 7.重新啟動mysql,并登錄測試...
2023-03-15