Mysql CAST函數(shù)的具體使用
CAST函數(shù)用于將值從一種數(shù)據(jù)類(lèi)型轉(zhuǎn)換為表達(dá)式中指定的另一種數(shù)據(jù)類(lèi)型
語(yǔ)法
CAST(value AS datatype)
AS關(guān)鍵字用于分隔兩個(gè)參數(shù),在AS之前的是要處理的數(shù)據(jù),在AS之后的是要轉(zhuǎn)換的數(shù)據(jù)類(lèi)型
參數(shù)說(shuō)明
value: 要轉(zhuǎn)換的值
datatype: 要轉(zhuǎn)換成的數(shù)據(jù)類(lèi)型
| 值 | 描述 |
| 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ù)類(lèi)型
-- 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ù)類(lèi)型
-- 2022-04-27 00:00:00
SELECT CAST('2022-04-27' AS DATETIME); 3.將值轉(zhuǎn)換為T(mén)IME數(shù)據(jù)類(lèi)型
-- 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ù)類(lèi)型
-- '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ù)類(lèi)型
-- 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ù)類(lèi)型
-- 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ù)類(lèi)型
-- 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ēng)(存儲(chǔ)相應(yīng)料號(hào)位置)
注明: ID,Material,F(xiàn)ileName都是VARCHAR類(lèi)型
FileName取值舉例說(shuō)明:'FD03-FCZ-220430012624541.txt',紅色標(biāo)注數(shù)字代表年月日,其余都取值相同(不用考慮具體含義)
問(wèn)題:查詢(xún)小于220401(整數(shù)類(lèi)型年月日數(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類(lèi)型,220401為整數(shù)類(lèi)型,需要使用CAST函數(shù)進(jìn)行類(lèi)型轉(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-08
Mysql 數(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-11
DOS命令行窗口mysql中文顯示亂碼問(wèn)題解決方法
MySQL的默認(rèn)編碼是Latin1,不支持中文,如何修改MySQL的默認(rèn)編碼呢,下面為大家詳細(xì)介紹下2014-05-05
MySQL存儲(chǔ)過(guò)程中一些基本的異常處理教程
這篇文章主要介紹了MySQL存儲(chǔ)過(guò)程中一些基本的異常處理教程,其中rollback命令的使用需要謹(jǐn)慎一些,需要的朋友可以參考下2015-12-12

