MySQL字符串轉(zhuǎn)數(shù)字的3種方式實例
前言
MySQL數(shù)據(jù)表t的c1列是varchar字符串類型,存儲如下記錄
如果按照"T+數(shù)字"中的"數(shù)字"排序,常規(guī)的操作order by c1,執(zhí)行是錯誤的,實際上按照字符串的ASCII排序的,
select?*?from?t01?order?by?c1;
如果順著想,字符串截取出"T+數(shù)字"中的"數(shù)字"排序,
select?*?from?t01?order?by?substr(c1,?2);
還是不對的,因為本質(zhì)上,還是按照字符串進(jìn)行的排序,
針對這個需求,可以有三種方案
(1)字段值 + 0
MySQL會根據(jù)上下文自動轉(zhuǎn)換類型,通過"字段值+0",可以將原本是字符類型的字段值以數(shù)值型返回,
select?*?from?t01?order?by?substr(c1,?2)?+?0;
(2)CAST函數(shù)
CAST()函數(shù)可以將一個字段的值轉(zhuǎn)成另一個類型并輸出。
語法:CAST(字段名 AS 轉(zhuǎn)換的類型)
select * from t01 order by cast(substr(c1, 2) as unsigned);
其中,
unsigned,表示無符號,不能表示小數(shù)。
signed,表示有符號,可以表示小數(shù)。
(3)CONVERT函數(shù)
CONVERT()函數(shù),將一個字段的值轉(zhuǎn)成另一個類型并輸出。
語法:CONVERT(字段名, 轉(zhuǎn)換的類型)
select * from t01 order by convert(substr(c1, 2), unsigned);
其中
unsigned,表示無符號,不能表示小數(shù)。
signed,表示有符號,可以表示小數(shù)。
總結(jié)
到此這篇關(guān)于MySQL字符串轉(zhuǎn)數(shù)字的3種方式的文章就介紹到這了,更多相關(guān)MySQL字符串轉(zhuǎn)數(shù)字內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL重復(fù)數(shù)據(jù)提取最新一條技術(shù)方法詳解
在MySQL數(shù)據(jù)庫中清除重復(fù)數(shù)據(jù)是一項常見的任務(wù),下面這篇文章主要給大家介紹了關(guān)于MySQL重復(fù)數(shù)據(jù)提取最新一條的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07MySQL中的聚簇索引、非聚簇索引、聯(lián)合索引和唯一索引詳細(xì)介紹
本文主要介紹了MySQL的索引類型,根據(jù)索引的存儲方式來劃分,索引可以分為聚簇索引和非聚簇索引。聚簇索引的特點(diǎn)是葉子節(jié)點(diǎn)包含了完整的記錄行,而非聚簇索引的葉子節(jié)點(diǎn)只有所以字段和主鍵ID,感興趣的同學(xué)可以閱讀本文2023-04-04mysql命令導(dǎo)出表結(jié)構(gòu)和數(shù)據(jù)的操作方法
在日常使用中,我們經(jīng)常需要對數(shù)據(jù)庫進(jìn)行備份和復(fù)制,因此必須了解如何導(dǎo)出表結(jié)構(gòu)和表數(shù)據(jù),以下是使用MySQL命令導(dǎo)出表結(jié)構(gòu)和表數(shù)據(jù)的方法,感興趣的朋友一起看看吧2023-11-11MySql查詢某個時間段內(nèi)的數(shù)據(jù)實例(前一周、前三個月、前一年等)
在實際工作中需要整理一份時間在規(guī)定時間前后的統(tǒng)計表,下面這篇文章主要給大家介紹了關(guān)于MySql查詢某個時間段內(nèi)的數(shù)據(jù)的相關(guān)資料,包括前一周、前三個月、前一年等,需要的朋友可以參考下2022-10-10