我有一列日期格式为 201201、201202、201203 等。
这是一个财务数据库,所以有一个周期 13;但是,出于报告目的,将第 12 和 13 期合并。
当最后两个字符为 13 时,如何将它们替换为 12?
我从
SELECT REPLACE(PERIOD, '13', '12')
FROM @b_s_summary
但是,当然,这与 2013 年的年份不符。
感谢所有的建议。
我有一列日期格式为 201201、201202、201203 等。
这是一个财务数据库,所以有一个周期 13;但是,出于报告目的,将第 12 和 13 期合并。
当最后两个字符为 13 时,如何将它们替换为 12?
我从
SELECT REPLACE(PERIOD, '13', '12')
FROM @b_s_summary
但是,当然,这与 2013 年的年份不符。
感谢所有的建议。
在这种情况下,您可以使用 Substring:
SELECT REPLACE(PERIOD, SUBSTRING(PERIOD, len(PERIOD) - 1, 2), '12')
FROM @b_s_summary WHERE PERIOD LIKE '%13'
这是否适合您,或者您是否需要在过去或未来几年采用更具活力的方法?
declare @Periods as Table ( Period VarChar(6) )
insert into @Periods ( Period ) values
( '201212' ), ( '201213' ), ( '201312' ), ( '201313' )
select Period, case
when Right( Period, 2 ) = '13' then Substring( Period, 1, 4 ) + '12'
else Period end as [AdjustedPeriod]
from @Period
同样,可以使用 RIGHT()。
SELECT REPLACE(RIGHT(PERIOD,2),'13','12')
试试这个:
select (case when right(period, 2) = '13' then left(period, 4) + '12' else period end)
相当标准的 SQL,但某些数据库可能需要substr()
orsubstring()
而不是right()
and left()
。
从@b_s_summary 中选择左侧(期间,LEN(期间)- 2)