gpt4 book ai didi

SQL Server 将前导零添加到一位数月份

转载 作者:行者123 更新时间:2023-12-04 16:12:35 24 4
gpt4 key购买 nike

我正在尝试为只有一个数字的月份(十月之前的所有月份)添加一个前导零。这是我的代码:

with tab1 as (
select month(CommitDate) monCommDt
, year(CommitDate) yrCommDt
from myTable

)

select CASE WHEN LEN(monCommDt) = 1
THEN CONCAT('0', monCommDt)
ELSE monCommDt
END lzCommDt
, yrCommDt
, LEN(monCommDt) lenCommDt
from tab1

这是输出:

lzCommDt    yrCommDt    lenCommDt
7 2013 1
7 2013 1
7 2013 1
7 2013 1

知道为什么没有添加前导 0 吗?

最佳答案

不加前导0的原因是因为你的CASE表达式的结果被转换回了INT。请记住,在使用 CASE 表达式时,如果所有结果的数据类型不同,它们将被转换为具有较高 data type precedence 的类型。 ,在本例中为 INT。您应该将结果CASTVARCHAR 以获得所需的结果:

CASE 
WHEN LEN(monCommDt) = 1
THEN CONCAT('0', CAST(monCommDt AS VARCHAR(2)))
ELSE
CAST(monCommDt AS VARCHAR(2))
END lzCommDt

另一种解决方案是使用 RIGHT 填充结果:

SELECT RIGHT('0' + CAST(monCommDt AS VARCHAR(2)), 2)

关于SQL Server 将前导零添加到一位数月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36438715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com