Mysql CAST函數(shù)的具體使用
CAST函數(shù)用于將值從一種數(shù)據(jù)類型轉(zhuǎn)換為表達式中指定的另一種數(shù)據(jù)類型
語法
CAST(value AS datatype)
AS關(guān)鍵字用于分隔兩個參數(shù),在AS之前的是要處理的數(shù)據(jù),在AS之后的是要轉(zhuǎn)換的數(shù)據(jù)類型
參數(shù)說明
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(固定長度的字符串)格式 |
| SIGNED | 將value轉(zhuǎn)換成INT(有符號的整數(shù))格式 |
| UNSIGNED | 將value轉(zhuǎn)換成INT(無符號的整數(shù))格式 |
| DECIMAL | 將value轉(zhuǎn)換成FLOAT(浮點數(shù))格式 |
| BINARY | 將value轉(zhuǎ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);
-- 出錯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ù)點保留長度)
-- DECIMAL(10,2)可以存儲最多具有8位整數(shù)和2位小數(shù)的數(shù)字
-- 精度與小數(shù)位數(shù)分別為10與2
-- 精度是總的數(shù)字位數(shù),包括小數(shù)點左邊和右邊位數(shù)的總和
-- 小數(shù)位數(shù)是小數(shù)點右邊的位數(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));練習案例
導入數(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:料號 FileName:文件名稱(存儲相應料號位置)
注明: ID,Material,F(xiàn)ileName都是VARCHAR類型
FileName取值舉例說明:'FD03-FCZ-220430012624541.txt',紅色標注數(shù)字代表年月日,其余都取值相同(不用考慮具體含義)
問題:查詢小于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ù)進行類型轉(zhuǎn)換
結(jié)果展示:

到此這篇關(guān)于Mysql CAST函數(shù)的具體使用的文章就介紹到這了,更多相關(guān)Mysql CAST函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql中一個普通ERROR 1135 (HY000)錯誤引發(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ù)庫開啟binlog的實現(xiàn)步驟
本文主要介紹了Mysql 數(shù)據(jù)庫開啟binlog的實現(xiàn)步驟,對于運維或架構(gòu)人員來說,開啟binlog日志功能非常重要,具有一定的參考價值,感興趣的可以了解一下2023-11-11

