国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

淺析MySQL顯式類型轉換

2024-07-24 12:50:49
字體:
來源:轉載
供稿:網友

CAST 函數

在之前的文章中,我們提到過CAST函數,用于顯示進行類型轉換。在避免隱式類型轉換時,好處多多。其實這里面還有很多細節,是需要梳理下的。

首先來看看下面這個轉換:

mysql> SELECT CAST('2017-12-14' AS DATE);+----------------------------+| CAST('2017-12-14' AS DATE) |+----------------------------+| 2017-12-14 |+----------------------------+1 row in set (0.00 sec)

其中:

2017-12-14 是待轉換的數據。

DATE為轉換后的類型。

標準語法是這樣的:

CAST(expr AS type)

這里需要注意的是type類型不支持所有的數據類型,而是支持特定的數據類型,也是今天這篇文章的重點。(我就吃過這個虧,想當然的以為支持所有數據類型,結果就被打臉了) 。

不支持的報錯:

mysql> SELECT CAST('1024' AS int);ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'int)' at line 1

支持的類型

下面是CAST函數支持轉換的數據類型列表:

類型 備注
DATE YYYY-MM-DD
DATETIME YYYY-MM-DD HH:mm:ss
TIME HH:mm:ss
DECIMAL 通常用于帶小數位
CHAR 固定長度字符串
NCHAR 類型于CHAR一致
SIGNED 一個有符號的64整數位
UNSIGNED 一個無符號的64整數位
BINARY 二進制字符串
JSON MySQL 5.7.8 及更高版本

注意:

其中DATE支持的范圍是: 1000-01-01 至 9999-12-31,(實驗版本為:)

如果為: 999-01-01 結果則會0999-01-01。

如果為: 01-01-01則會為:2001-01-01。

mysql> select cast('999-11-11' as DATE);+---------------------------+| cast('999-11-11' as DATE) |+---------------------------+| 0999-11-11 |+---------------------------+1 row in set (0.00 sec)
mysql> select cast('01-11-11' as DATE);+--------------------------+| cast('01-11-11' as DATE) |+--------------------------+| 2001-11-11 |+--------------------------+1 row in set (0.00 sec)
mysql> select version();+-----------+| version() |+-----------+| 5.7.20 |+-----------+1 row in set (0.00 sec)

2. CAST函數中expr的值可以轉換為type,其轉換的結果才正確,否則轉換后的結果默認值,如Null,0等。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 夏津县| 平顶山市| 祁连县| 南皮县| 闻喜县| 灌南县| 浙江省| 常宁市| 土默特右旗| 高平市| 镇安县| 邹平县| 海盐县| 琼结县| 隆林| 平和县| 普兰县| 呼伦贝尔市| 云南省| 乾安县| 宁津县| 晋宁县| 通江县| 陕西省| 志丹县| 沁阳市| 赞皇县| 安康市| 太仓市| 苗栗市| 北海市| 泗阳县| 榕江县| 大厂| 光山县| 乐山市| 庆元县| 蕲春县| 景泰县| 遵义县| 泽普县|