日期:2014-05-16 浏览次数:20594 次
今天在用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