MySQL CAST與CONVERT 函式的用法

oufu發表於2015-10-18

MySQL 的CAST()和CONVERT()函式可用來獲取一個型別的值,併產生另一個型別的值。兩者具體的語法如下:

1 CAST(value as type);
2 CONVERT(value, type);

就是CAST(xxx AS 型別), CONVERT(xxx,型別)。

可以轉換的型別是有限制的。這個型別可以是以下值其中的一個:

  • 二進位制,同帶binary字首的效果 : BINARY    
  • 字元型,可帶引數 : CHAR()     
  • 日期 : DATE     
  • 時間: TIME     
  • 日期時間型 : DATETIME     
  • 浮點數 : DECIMAL      
  • 整數 : SIGNED     
  • 無符號整數 : UNSIGNED 

下面舉幾個例子:

例一

1 mysql> SELECT CONVERT('23',SIGNED);
2 +----------------------+
3 CONVERT('23',SIGNED) |
4 +----------------------+
5 |                   23 |
6 +----------------------+
7 1 row in set

例二

1 mysql> SELECT CAST('125e342.83' AS signed);
2 +------------------------------+
3 CAST('125e342.83' AS signed) |
4 +------------------------------+
5 |                          125 |
6 +------------------------------+
7 1 row in set

例三

1 mysql> SELECT CAST('3.35' AS signed);
2 +------------------------+
3 CAST('3.35' AS signed) |
4 +------------------------+
5 |                      3 |
6 +------------------------+
7 1 row in set

像上面例子一樣,將varchar 轉為int 用 cast(a as signed),其中a為varchar型別的字串。

例4

在SQL Server中,下面的程式碼演示了datetime變數中,僅包含單純的日期和單純的時間時,日期儲存的十六進位制儲存表示結果。

01 DECLARE @dt datetime
02   
03 --單純的日期
04 SET @dt='1900-1-2'
05 SELECT CAST(@dt as binary(8))
06 --結果: 0x0000000100000000
07   
08 --單純的時間
09 SET @dt='00:00:01'
10 SELECT CAST(@dt as binary(8))
11 --結果: 0x000000000000012C

MySQL的型別轉換和SQL Server一樣,就是型別引數有點點不同:CAST(xxx AS 型別) ,CONVERT(xxx,型別)。


 MySQL CAST與CONVERT 函式的用法

相關文章