SQL RIGHT函数未按预期工作

  • 本文关键字:工作 RIGHT 函数 SQL tsql
  • 更新时间 :
  • 英文 :


我正试图从日期中提取月份编号,作为一个带有0的左填充字符串。

例如,从'2018-01-31',我想要字符串'01'

目前我有这个:

SELECT RIGHT('0' + CAST(MONTH('2018-01-31') AS CHAR(2)), 2)

它正在返回'1',但我本希望它返回'01',因为我已经将第二个参数作为2提供给RIGHT

有人能解释一下为什么我认为它不起作用吗?

您需要将CHAR更改为VARCHAR:

SELECT RIGHT('0' + CAST(MONTH('2018-01-31') AS VARCHAR(2)), 2)

db<>小提琴演示

CHAR(2)是空白填充的,所以你得到的RIGHT('01 ',2)就是'1 '

当您第一次将字符串强制转换为DATE类型时,可以使用FORMAT。

SELECT FORMAT(CAST('2018-01-31' as DATE),'MM')

至于为什么拥有权限的SQL不起作用?

试试这个SQL并注意到区别(额外的空间(:

SELECT quotename('0' + CAST(1 AS CHAR(2))), quotename('0' + CAST(1 AS VARCHAR(2)))

最新更新