Mysql CAST函數(shù)的具體使用
CAST函數(shù)用于將值從一種數(shù)據(jù)類型轉(zhuǎn)換為表達(dá)式中指定的另一種數(shù)據(jù)類型
語(yǔ)法
CAST(value AS datatype)
AS關(guān)鍵字用于分隔兩個(gè)參數(shù),在AS之前的是要處理的數(shù)據(jù),在AS之后的是要轉(zhuǎn)換的數(shù)據(jù)類型
參數(shù)說(shuō)明
value: 要轉(zhuǎn)換的值
datatype: 要轉(zhuǎn)換成的數(shù)據(jù)類型
值 | 描述 |
DATE | 將value轉(zhuǎn)換成'YYYY-MM-DD'格式 |
DATETIME | 將value轉(zhuǎn)換成'YYYY-MM-DD HH:MM:SS'格式 |
TIME | 將value轉(zhuǎn)換成'HH:MM:SS'格式 |
CHAR | 將value轉(zhuǎn)換成CHAR(固定長(zhǎng)度的字符串)格式 |
SIGNED | 將value轉(zhuǎn)換成INT(有符號(hào)的整數(shù))格式 |
UNSIGNED | 將value轉(zhuǎn)換成INT(無(wú)符號(hào)的整數(shù))格式 |
DECIMAL | 將value轉(zhuǎn)換成FLOAT(浮點(diǎn)數(shù))格式 |
BINARY | 將value轉(zhuǎn)換成二進(jìn)制格式 |
示例
1.將值轉(zhuǎn)換為DATE數(shù)據(jù)類型
-- 2017-08-29 SELECT CAST('2017-08-29' AS DATE); -- 2022-04-27 15:42:19 SELECT NOW(); -- 2022-04-27 SELECT CAST(NOW() AS DATE);
2.將值轉(zhuǎn)換為DATETIME數(shù)據(jù)類型
-- 2022-04-27 00:00:00 SELECT CAST('2022-04-27' AS DATETIME);
3.將值轉(zhuǎn)換為TIME數(shù)據(jù)類型
-- 14:06:10 SELECT CAST('14:06:10' AS TIME); -- 14:06:10 SELECT CAST('2022-04-27 14:06:10' AS TIME);
4.將值轉(zhuǎn)換為CHAR數(shù)據(jù)類型
-- '150' SELECT CAST(150 AS CHAR); -- 出錯(cuò)Error SELECT CONCAT('Hello World',437)); -- 'Hello World437' SELECT CONCAT('Hello World',CAST(437 AS CHAR));
5.將值轉(zhuǎn)換為SIGNED數(shù)據(jù)類型
-- 5 SELECT CAST('5.0' AS SIGNED); -- 2 SELECT (1 + CAST('3' AS SIGNED))/2; -- -5 SELECT CAST(5-10 AS SIGNED); -- 6 SELECT CAST(6.4 AS SIGNED); -- -6 SELECT CAST(-6.4 AS SIGNED); -- 7 SELECT CAST(6.5 AS SIGNED); -- -7 SELECT CAST(-6.5 AS SIGNED);
6.將值轉(zhuǎn)換為UNSIGNED數(shù)據(jù)類型
-- 5 SELECT CAST('5.0' AS UNSIGNED); -- 6 SELECT CAST(6.4 AS UNSIGNED); -- 0 SELECT CAST(-6.4 AS UNSIGNED); -- 7 SELECT CAST(6.5 AS UNSIGNED); -- 0 SELECT CAST(-6.5 AS UNSIGNED);
7.將值轉(zhuǎn)換為DECIMAL數(shù)據(jù)類型
-- 9 SELECT CAST('9.0' AS DECIMAL); -- DECIMAL(數(shù)值精度,小數(shù)點(diǎn)保留長(zhǎng)度) -- DECIMAL(10,2)可以存儲(chǔ)最多具有8位整數(shù)和2位小數(shù)的數(shù)字 -- 精度與小數(shù)位數(shù)分別為10與2 -- 精度是總的數(shù)字位數(shù),包括小數(shù)點(diǎn)左邊和右邊位數(shù)的總和 -- 小數(shù)位數(shù)是小數(shù)點(diǎn)右邊的位數(shù) -- 9.50 SELECT CAST('9.5' AS DECIMAL(10,2)); -- 99999999.99 SELECT CAST('1234567890.123' AS DECIMAL(10,2)); -- 220.232 SELECT CAST('220.23211231' AS DECIMAL(10, 3)); -- 220.232 SELECT CAST(220.23211231 AS DECIMAL(10, 3));
練習(xí)案例
導(dǎo)入數(shù)據(jù)
DROP TABLE IF EXISTS `Material`; CREATE TABLE `Material` ( `ID` varchar(255) DEFAULT NULL, `Material` varchar(255) DEFAULT NULL, `FileName` varchar(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; INSERT INTO `Material` VALUES ('1', '07-100215-01', 'FD03-FCZ-220430012624541.txt'); INSERT INTO `Material` VALUES ('2', '07-100390-01', 'FD03-FCZ-210318012624541.txt'); INSERT INTO `Material` VALUES ('3', '07-1043-01', 'FD03-FCZ-170430012624541.txt'); INSERT INTO `Material` VALUES ('4', '07-1044-01', 'FD03-FCZ-191225012624541.txt'); INSERT INTO `Material` VALUES ('5', '07-1045-01', 'FD03-FCZ-200601012624541.txt'); INSERT INTO `Material` VALUES ('6', '07-1046-01', 'FD03-FCZ-180705012624541.txt');
Material表
Material:料號(hào) FileName:文件名稱(存儲(chǔ)相應(yīng)料號(hào)位置)
注明: ID,Material,F(xiàn)ileName都是VARCHAR類型
FileName取值舉例說(shuō)明:'FD03-FCZ-220430012624541.txt',紅色標(biāo)注數(shù)字代表年月日,其余都取值相同(不用考慮具體含義)
問(wèn)題:查詢小于220401(整數(shù)類型年月日數(shù)值)的Material
SELECT Material FROM (SELECT Material,(CAST(SUBSTRING(FileName,10,6)AS SIGNED))AS 'time' FROM Material WHERE 'time' < 220401)AS filter_material;
解題思路
利用SUBSTRING函數(shù)截取FileName值中代表年月日的數(shù)字
由于FileName中的值為varchar類型,220401為整數(shù)類型,需要使用CAST函數(shù)進(jìn)行類型轉(zhuǎn)換
結(jié)果展示:
到此這篇關(guān)于Mysql CAST函數(shù)的具體使用的文章就介紹到這了,更多相關(guān)Mysql CAST函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql中一個(gè)普通ERROR 1135 (HY000)錯(cuò)誤引發(fā)的血案
ERROR 1135 (HY000): Can’t create a new thread (errno 11);if you are not out of available memory,you can consult the manual for a possible OS-dependent bug2015-08-08Mysql 數(shù)據(jù)庫(kù)開(kāi)啟binlog的實(shí)現(xiàn)步驟
本文主要介紹了Mysql 數(shù)據(jù)庫(kù)開(kāi)啟binlog的實(shí)現(xiàn)步驟,對(duì)于運(yùn)維或架構(gòu)人員來(lái)說(shuō),開(kāi)啟binlog日志功能非常重要,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11DOS命令行窗口mysql中文顯示亂碼問(wèn)題解決方法
MySQL的默認(rèn)編碼是Latin1,不支持中文,如何修改MySQL的默認(rèn)編碼呢,下面為大家詳細(xì)介紹下2014-05-05MySQL存儲(chǔ)過(guò)程中一些基本的異常處理教程
這篇文章主要介紹了MySQL存儲(chǔ)過(guò)程中一些基本的異常處理教程,其中rollback命令的使用需要謹(jǐn)慎一些,需要的朋友可以參考下2015-12-12