日期:2014-05-16  浏览次数:20594 次

concat 函数问题

今天在用mysql写语句查询的时候,遇到了两个问题

第一个就是用CONCAT函数连接参数时,遇中文就乱码

第二个就是连接的时候,连接的字显示不完全

刚开始我写的sql语句是这样的:(这个是简化后的,原本是多个表连接还有很多查询条件,所以就加了group by)

SELECT

CONCAT(YEAR(con.record_time),'年',QUARTER(con.record_time),'季度')?AS record_time
FROM consignation?? con
GROUP?BY con.record_time

加了group by 就乱码

后来查了一些资料后,知道有两种方法可以解决乱码,一种是用cast,另外一种是用CONVERT,原理都是一样的就是要将

一个数字参数被转化为与之相等的二进制字符串格式

SELECT

CONCAT(cast(YEAR(con.record_time) as char),'年',CONVERT(QUARTER(con.record_time),char),'季度') AS record_time

FROM consignation?? con
GROUP?BY con.record_time?
改了之后第二个问题出现了,它只显示一个2012,年后面的都没显示,看了一会才知道,原来是char类型我没定义大小

所以最后就改成一下这个了

SELECT

CONCAT(cast(YEAR(con.record_time) as char(4)),'年',CONVERT(QUARTER(con.record_time),char(1)),'季度') AS record_time

FROM consignation?? con
GROUP?BY con.record_time