mysql中采⽤concat来拼接中⽂字符乱码解决⽅式(转)
mysql concat乱码问题解决 concat(str1,str2) 当concat结果集出现乱码时,⼤都是由于连接的字段类型不同导致,如concat中的字段参数⼀个是varchar类型,⼀个是int类型或doule类型,就会出现乱码。
解决⽅法:利⽤mysql的字符串转换函数CONVERT将参数格式化为char类型就可以了。举例: concat('数
量:',CONVERT(int1,char),CONVERT(int2,char),'⾦额:',CONVERT(double1,char),CONVERT(double2,char))
后记:
MySQL 的CAST()和CONVERT()函数可⽤来获取⼀个类型的值,并产⽣另⼀个类型的值。两者具体的语法如下:
1CAST(value as type);
2CONVERT(value, type);
就是(xxx AS 类型), CONVERT(xxx,类型)。
可以转换的类型是有限制的。这个类型可以是以下值其中的⼀个:
⼆进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
⽇期 : DATE
时间: TIME
⽇期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
⽆符号整数 : UNSIGNED
下⾯举⼏个例⼦:
例⼀
1mysql> SELECT CONVERT('23',SIGNED);
2+----------------------+
3| CONVERT('23',SIGNED) |
4+----------------------+
5|                  23 |
6+----------------------+
71 row in set
例⼆
1mysql> SELECT CAST('125e342.83'AS signed);
2+------------------------------+
3| CAST('125e342.83'AS signed) |
4+------------------------------+
5|                          125 |
6+------------------------------+
71 row in set
例三
1mysql> SELECT CAST('3.35'AS signed);
2+------------------------+
3| CAST('3.35'AS signed) |
4+------------------------+
5|                      3 |
6+------------------------+
71 row in set
像上⾯例⼦⼀样,将varchar 转为int ⽤ cast(a as signed),其中a为varchar类型的字符串。
例4
在SQL Server中,下⾯的代码演⽰了datetime变量中,仅包含单纯的⽇期和单纯的时间时,⽇期存储的⼗六进制存储表⽰结果。
01DECLARE @dt datetime
02
03--单纯的⽇期
04SET @dt='1900-1-2'
05SELECT CAST(@dt as binary(8))
06--结果: 0x0000000100000000
07
08--单纯的时间
09SET @dt='00:00:01'
mysql中select
10SELECT CAST(@dt as binary(8))
11--结果: 0x000000000000012C
MySQL的类型转换和SQL Server⼀样,就是类型参数有点点不同:CAST(xxx AS 类型) ,(xxx,类型)。