MySQL如何将单列年份值转换为「年份-年份」格式?
解决SQL中年份列格式化为“xxxx-xxxx”的问题
你之前用REPEAT函数的问题在于,这个函数只是单纯重复原字符串指定次数,自然不会自动添加分隔符。要实现“4位年份-4位年份”的格式,需要用字符串拼接函数把年份、连接符-、年份这三个部分组合起来。
通用解决方案(适用于MySQL、MariaDB等)
使用CONCAT函数完成拼接:
SELECT CASE WHEN CHAR_LENGTH(`Year`) = 4 THEN CONCAT(`Year`, '-', `Year`) ELSE `Year` END AS new_y FROM xxxx;
其他数据库适配写法
- SQL Server:如果
Year是字符串类型,直接用+拼接;如果是数值类型,需要先转成字符串:
SELECT CASE WHEN LEN(CAST([Year] AS VARCHAR(4))) = 4 THEN CAST([Year] AS VARCHAR(4)) + '-' + CAST([Year] AS VARCHAR(4)) ELSE CAST([Year] AS VARCHAR(MAX)) END AS new_y FROM xxxx;
- PostgreSQL:用
||作为拼接运算符:
SELECT CASE WHEN CHAR_LENGTH("Year") = 4 THEN "Year" || '-' || "Year" ELSE "Year" END AS new_y FROM xxxx;
内容的提问来源于stack exchange,提问作者n.ceren
相关产品推荐
相关产品推荐

