主頁 > 知識(shí)庫 > 淺析MySQL顯式類型轉(zhuǎn)換

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

熱門標(biāo)簽:銀川電銷外呼系統(tǒng)定制 凱立德科技館地圖標(biāo)注 中科嘉智人工智能電銷機(jī)器人 哈爾濱crm外呼系統(tǒng)價(jià)格 西安400電話在哪里辦理 甘孜電話機(jī)器人廠家 電銷機(jī)器人好品牌門薩維l 做地圖標(biāo)注都需要什么工具 上海智能外呼系統(tǒng)需要多少錢

CAST 函數(shù)

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

首先來看看下面這個(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)換后的類型。

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

CAST(expr AS type)

這里需要注意的是type類型不支持所有的數(shù)據(jù)類型,而是支持特定的數(shù)據(jù)類型,也是今天這篇文章的重點(diǎn)。(我就吃過這個(gè)虧,想當(dāng)然的以為支持所有數(shù)據(jù)類型,結(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

支持的類型

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

類型 備注
DATE YYYY-MM-DD
DATETIME YYYY-MM-DD HH:mm:ss
TIME HH:mm:ss
DECIMAL 通常用于帶小數(shù)位
CHAR 固定長度字符串
NCHAR 類型于CHAR一致
SIGNED 一個(gè)有符號(hào)的64整數(shù)位
UNSIGNED 一個(gè)無符號(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類型轉(zhuǎn)換為Demical類型,轉(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)換案例

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

DATE 類型

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 類型

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 類型

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類型

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

UNSIGNED類型

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

DECIMAL類型

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)

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

您可能感興趣的文章:
  • 解析MySQL隱式轉(zhuǎn)換問題
  • MySQL的隱式類型轉(zhuǎn)換整理總結(jié)
  • MySQL隱式類型的轉(zhuǎn)換陷阱和規(guī)則
  • MySQL的時(shí)間差函數(shù)(TIMESTAMPDIFF、DATEDIFF)、日期轉(zhuǎn)換計(jì)算函數(shù)(date_add、day、date_format、str_to_date)
  • 使用python將mysql數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換為json數(shù)據(jù)的方法
  • MySQL常用類型轉(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顯式類型轉(zhuǎn)換》,本文關(guān)鍵詞  淺析,MySQL,顯式,類型,轉(zhuǎn)換,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺析MySQL顯式類型轉(zhuǎn)換》相關(guān)的同類信息!
  • 本頁收集關(guān)于淺析MySQL顯式類型轉(zhuǎn)換的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章