我试图将前导零添加到只有一位数的月份(10月之前的所有内容)。这是我的代码:
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 :(得分:4)
未添加前导0的原因是因为CASE
表达式的结果将转换回INT
。请记住,在使用CASE
表达式时,如果所有结果的数据类型不相同,则会将它们转换为data type precedence更高的那个,在本例中为INT
。您应该CAST
将结果VARCHAR
发送到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)
填充结果:
.download()
答案 1 :(得分:2)
使用右功能:
db:
image: mysql
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/myapp
ports:
- "3000:3000"
links:
- db:db
environment:
RAILS_ENV: development