MySQL--数据类型转换(CAST/CONVERT)、拼接(CONCAT)

数据基础

mysql> select * from a;
+------+-----------+
| id   | num       |
+------+-----------+
|    1 |       100 |
|    2 |       200 |
|    3 |       300 |
|    4 |       300 |
|    8 |      NULL |
|    9 |      NULL |
|   10 |     12312 |
|   10 | 123121231 |
|   10 | 123121231 |
+------+-----------+
9 rows in set (0.00 sec)

CAST/CONVERT(数据类型转换)

在MySQL使用过程中,有时我们需要对数据类型进行转换,如将数据取整,或是将数据转换成字符串格式等,这种情况下我们可以直接调用类型转换函数实现这一功能。

数据类型转换可以采用CAST( 数据 as 类型 )CONVERT(数据,类型 )函数。

两个函数适用转换的类型有6个

函数类型
CHAR( )字符型
DECIMAL(数值长度,精度/小数点保留长度)浮点型(float)
SIGNED整数型(int)
DATE日期
TIME时间
DATETIME日期时间型

使用效果如下

mysql> select cast(num as time) from a;
+-------------------+
| cast(num as time) |
+-------------------+
| 00:01:00          |
| 00:02:00          |
| 00:03:00          |
| 00:03:00          |
| NULL              |
| NULL              |
| 01:23:12          |
| NULL              |
| NULL              |
+-------------------+
9 rows in set, 2 warnings (0.00 sec)
mysql> select convert(num, time) from a;
+--------------------+
| convert(num, time) |
+--------------------+
| 00:01:00           |
| 00:02:00           |
| 00:03:00           |
| 00:03:00           |
| NULL               |
| NULL               |
| 01:23:12           |
| NULL               |
| NULL               |
+--------------------+
9 rows in set, 2 warnings (0.00 sec)

CAST/CONVER 函数与ROUND函数的区别:

ROUND函数对于整数型的数据,无法强制转换为浮点型CAST/CONVER 函数可以。

ROUND( 整数,精度):

mysql> select round(100,2);
+--------------+
| round(100,2) |
+--------------+
|          100 |
+--------------+
1 row in set (0.00 sec)

CAST( 整数,DECIMAL(长度,精度)):

mysql> select cast(100 as decimal(10,2));
+----------------------------+
| cast(100 as decimal(10,2)) |
+----------------------------+
|                     100.00 |
+----------------------------+
1 row in set (0.00 sec)

ROUND( 字符串,精度):

mysql> select round('100',2);
+----------------+
| round('100',2) |
+----------------+
|         100.00 |
+----------------+
1 row in set (0.00 sec)

CAST( 字符串,DECIMAL(长度,精度)):

mysql> select cast('100' as decimal(10,2));
+------------------------------+
| cast('100' as decimal(10,2)) |
+------------------------------+
|                       100.00 |
+------------------------------+
1 row in set (0.00 sec)

CONCAT(数据拼接)

当我们希望将两列数据或两个值拼接在一起时,可以使用CONCAT函数

使用如下

mysql> select concat('id: ',id) from a;
+-------------------+
| concat('id: ',id) |
+-------------------+
| id: 1             |
| id: 2             |
| id: 3             |
| id: 4             |
| id: 8             |
| id: 9             |
| id: 10            |
| id: 10            |
| id: 10            |
+-------------------+
9 rows in set (0.00 sec)

mysql> select concat(cast(num/100 as decimal(50,2)),'%') `num(%)` from a;
		//这里将cast替换成round,convert都是可以的。
+----------------+
| num(%)         |
+----------------+
| 1.00%          |
| 2.00%          |
| 3.00%          |
| 3.00%          |
| NULL           |
| NULL           |
| 123.12%        |
| 1231212.31%    |
| 1231212.31%    |
+----------------+
9 rows in set (0.00 sec)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值