sql concat从表达式中删除零

qncylg1j  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(352)

我正在尝试不同的方法将0放在10个月之前。
我尝试了以下表达式,但0被删除。
我做错什么了?

CASE
      WHEN month([Transact_Date]) < 10 
      THEN CONCAT(str(0),STR(month([Transact_Date]),1))
      ELSE month([Transact_Date])
      END  AS month_w_0

谢谢!
汤姆

uurv41yg

uurv41yg1#

我认为左填充技巧是你想要的。假设您的数据库是sql server:

SELECT RIGHT('00' + STR(MONTH([Transact_Date])), 2) AS month_w_0
FROM yourTable;

你不需要一个 CASE 这个表达式。在较新版本的sql server中 FORMAT 函数也可以处理这个问题。

snvhrwxg

snvhrwxg2#

我已经测试过了,它会返回您想要的结果:

select CASE WHEN mnt < 10  THEN 
                 concat('0' , mnt)
       ELSE mnt
       END  AS month_w_0
from ( select  month([Transact_Date]) mnt
       from test_t) A

我已经意识到你的问题所在了。你也可以这样做:

SELECT 
CASE
      WHEN month([Transact_Date]) < 10 
      THEN CONCAT(str(0),STR(month([Transact_Date]),1))
      ELSE STR(month([Transact_Date]),1)
      END  AS month_w_0
from test_t

问题只是else部分,我认为这是因为case when子句只返回一种类型的od数据。在then部分中,您尝试了retunr字符串和else部分编号。
希望这有帮助。。。
这是一个演示

相关问题