佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > 淺析MySQL顯式類(lèi)型轉(zhuǎn)換

淺析MySQL顯式類(lèi)型轉(zhuǎn)換

熱門(mén)標(biāo)簽:AI電銷(xiāo) 地方門(mén)戶(hù)網(wǎng)站 鐵路電話系統(tǒng) Linux服務(wù)器 百度競(jìng)價(jià)排名 網(wǎng)站排名優(yōu)化 服務(wù)外包 呼叫中心市場(chǎng)需求

CAST 函數(shù)

在之前的文章中,我們提到過(guò)CAST函數(shù),用于顯示進(jìn)行類(lèi)型轉(zhuǎn)換。在避免隱式類(lèi)型轉(zhuǎn)換時(shí),好處多多。其實(shí)這里面還有很多細(xì)節(jié),是需要梳理下的。

首先來(lái)看看下面這個(gè)轉(zhuǎn)換:

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 是待轉(zhuǎn)換的數(shù)據(jù)。

DATE為轉(zhuǎn)換后的類(lèi)型。

標(biāo)準(zhǔn)語(yǔ)法是這樣的:

CAST(expr AS type)

這里需要注意的是type類(lèi)型不支持所有的數(shù)據(jù)類(lèi)型,而是支持特定的數(shù)據(jù)類(lèi)型,也是今天這篇文章的重點(diǎn)。(我就吃過(guò)這個(gè)虧,想當(dāng)然的以為支持所有數(shù)據(jù)類(lèi)型,結(jié)果就被打臉了) 。

不支持的報(bào)錯(cuò):

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

支持的類(lèi)型

下面是CAST函數(shù)支持轉(zhuǎn)換的數(shù)據(jù)類(lèi)型列表:

類(lèi)型 備注
DATE YYYY-MM-DD
DATETIME YYYY-MM-DD HH:mm:ss
TIME HH:mm:ss
DECIMAL 通常用于帶小數(shù)位
CHAR 固定長(zhǎng)度字符串
NCHAR 類(lèi)型于CHAR一致
SIGNED 一個(gè)有符號(hào)的64整數(shù)位
UNSIGNED 一個(gè)無(wú)符號(hào)的64整數(shù)位
BINARY 二進(jìn)制字符串
JSON MySQL 5.7.8 及更高版本

注意:

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

如果為: 999-01-01 結(jié)果則會(huì)0999-01-01。

如果為: 01-01-01則會(huì)為: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函數(shù)中expr的值可以轉(zhuǎn)換為type,其轉(zhuǎn)換的結(jié)果才正確,否則轉(zhuǎn)換后的結(jié)果默認(rèn)值,如Null,0等。

例如:一個(gè)Char類(lèi)型轉(zhuǎn)換為Demical類(lèi)型,轉(zhuǎn)換的結(jié)果就為0。

mysql> SELECT CAST('ANDYQIAN' AS DECIMAL);
+-----------------------------+
| CAST('ANDYQIAN' AS DECIMAL) |
+-----------------------------+
|              0 |
+-----------------------------+
1 row in set, 1 warning (0.00 sec)

轉(zhuǎn)換案例

這里給出一些常用的類(lèi)型轉(zhuǎn)換例子。

DATE 類(lèi)型

mysql> select cast('2017-12-14' as DATE);
+----------------------------+
| cast('2017-12-14' as DATE) |
+----------------------------+
| 2017-12-14         |
+----------------------------+
1 row in set (0.00 sec)

TIME 類(lèi)型

mysql> select cast('12:00:00' as TIME);
+--------------------------+
| cast('12:00:00' as TIME) |
+--------------------------+
| 12:00:00         |
+--------------------------+
1 row in set (0.00 sec)

DATETIM 類(lèi)型

mysql> select cast('2017-12-14 00:11:11' as DATETIME);
+-----------------------------------------+
| cast('2017-12-14 00:11:11' as DATETIME) |
+-----------------------------------------+
| 2017-12-14 00:11:11           |
+-----------------------------------------+
1 row in set (0.00 sec)

SIGNED類(lèi)型

mysql> select cast('-1024' as SIGNED);
+-------------------------+
| cast('-1024' as SIGNED) |
+-------------------------+
|          -1024 |
+-------------------------+
1 row in set (0.00 sec)

UNSIGNED類(lèi)型

mysql> select cast('-1024' as UNSIGNED);
+---------------------------+
| cast('-1024' as UNSIGNED) |
+---------------------------+
|   18446744073709550592 |
+---------------------------+
1 row in set, 1 warning (0.00 sec)

DECIMAL類(lèi)型

mysql> select cast('18.11' as DECIMAL(18,2));
+--------------------------------+
| cast('18.11' as DECIMAL(18,2)) |
+--------------------------------+
|             18.11 |
+--------------------------------+
1 row in set (0.00 sec)

以上就是本次整理的全部?jī)?nèi)容,大家測(cè)試的時(shí)候可以輸入命令嘗試下,如果還有任何不明白的地方,大家可以在下方的留言區(qū)域討論。

您可能感興趣的文章:
  • 解析MySQL隱式轉(zhuǎn)換問(wèn)題
  • MySQL的隱式類(lèi)型轉(zhuǎn)換整理總結(jié)
  • MySQL隱式類(lèi)型的轉(zhuǎn)換陷阱和規(guī)則
  • MySQL的時(shí)間差函數(shù)(TIMESTAMPDIFF、DATEDIFF)、日期轉(zhuǎn)換計(jì)算函數(shù)(date_add、day、date_format、str_to_date)
  • 使用python將mysql數(shù)據(jù)庫(kù)的數(shù)據(jù)轉(zhuǎn)換為json數(shù)據(jù)的方法
  • MySQL常用類(lèi)型轉(zhuǎn)換函數(shù)總結(jié)(推薦)
  • MySQL日期函數(shù)與日期轉(zhuǎn)換格式化函數(shù)大全
  • mysql 轉(zhuǎn)換NULL數(shù)據(jù)方法(必看)
  • 談?wù)凪ySQL中的隱式轉(zhuǎn)換

標(biāo)簽:銅川 湘潭 湖南 黃山 崇左 仙桃 蘭州 衡水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺析MySQL顯式類(lèi)型轉(zhuǎn)換》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢(xún)

    • 400-1100-266
    安国市| 临洮县| 长汀县| 西盟| 进贤县| 瑞昌市| 伊春市| 张家川| 梁河县| 霍邱县| 合阳县| 建德市| 卓尼县| 资中县| 永吉县| 定安县| 墨玉县| 依安县| 民丰县| 南和县| 玉山县| 天津市| 泰来县| 桐乡市| 建阳市| 平度市| 萝北县| 青田县| 乐清市| 宁德市| 绥中县| 金山区| 德江县| 吴旗县| 来凤县| 香格里拉县| 聊城市| 重庆市| 大关县| 巴塘县| 长武县|