MySQL: 数据类型转换函数(CONVERT/CONCAT/CAST)

名称 说明
BINARY 将 string 转换为二进制 string
CAST() 将某个值转换为特定类型
CONVERT() 将某个值转换为特定类型

数据类型转换可以通过CAST()和CONVERT()函数来实现。大多数情况下,这两个函数是重叠的,它们反映了SQL语言的演化历史。这两个函 数的功能相似,不过它们的语法不同。虽然并非所有类型的值都能转变为其他数据类型,但总的来说,任何可以转换的值都可以用简单的函数实现转换。

CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。以下例子用于将文本字符串’123’转换为整型:

1 SELECT CAST('123' AS int)

返回值是整型值123。如果试图将一个代表小数的字符串转换为整型值,又会出现什么情况呢?

1 SELECT CAST('123.4' AS int)

CAST()函数和CONVERT()函数都不能执行四舍五入或截断操作。由于123.4不能用int数据类型来表示,所以对这个函数调用将产生一个错误:

1 Server: Msg 245, Level 16, State 1, Line 1  Syntax error converting the varchar value '123.4' to column of data type int.

要返回一个合法的数值,就必须使用能处理这个值的数据类型。对于这个例子,存在多个可用的数据类型。如果通过CAST()函数将这个值转换为 decimal类型,需要首先定义decimal值的精度与小数位数。在本例中,精度与小数位数分别为9与2。精度是总的数字位数,包括小数点左边和右边 位数的总和。而小数位数是小数点右边的位数。这表示本例能够支持的最大的整数值是9999999,而最小的小数是0.01。

1 SELECT CAST('123.4' AS decimal(9,2))

decimal数据类型在结果网格中将显示有效小数位:

123.40

精度和小数位数的默认值分别是18与0。如果在decimal类型中不提供这两个值,SQL Server将截断数字的小数部分,而不会产生错误。

1 SELECT CAST('123.4' AS decimal)

结果是一个整数值:

123

1、将Int 转为varchar经常用 concat函数,比如concat(8,’0′) 得到字符串 ’80’
2、将varchar 转为Int 用 cast(a as signed) a为varchar类型的字符串

总结:类型转换和SQL Server一样,就是类型参数有点点不同 : CAST(xxx AS 类型) , CONVERT(xxx,类型)

可用的类型
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED

cast函数运行示例

1 mysql> select cast('125e342.83' as signed) as clm1, cast('foo seo 589' as signed) as clm2,cast('3.35' as signed) as clm3;
2 +——+——+——+
3 | clm1 | clm2 | clm3 |
4 +——+——+——+
5 |  125 |    0 |    3 |
6 +——+——+——+
7 1 row in set, 3 warnings (0.00 sec)
1 mysql> SELECT CONVERT('23',SIGNED);
2         -> 23
3  
4 mysql> SELECT CONVERT(100,CHAR);
5         -> '100'
1 SELECT CAST(_latin1'test' AS CHAR CHARACTER SET utf8);
2  
3 SELECT CONVERT(_latin1'Müller' USING utf8);
4  
5 INSERT INTO utf8table (utf8column)
6  
7 SELECT CONVERT(latin1field USING utf8) FROM latin1table; CONVERT(... USING ...)

原文链接:https://justcode.ikeepstudying.com/2016/08/mysql-%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E8%BD%AC%E6%8D%A2%E5%87%BD%E6%95%B0convertconcatcast/

发布了5 篇原创文章 · 获赞 0 · 访问量 6927

猜你喜欢

转载自blog.csdn.net/daobuxinzi/article/details/103905200
今日推荐