我有一个字符串值16 *******,我调用substring on来获取字符串文字的前两位数字
SUBSTRING(@CourtCaseNumber,1,2)
然后我需要一个函数,它将接受字符串参数(16)并返回给我四位数年份值2016.有些将是99,因此我需要一年的值1999,98将需要到1998年,15岁将需要2015年等。
所以看起来应该是这样的。我找不到能为我做这个的功能。
NEEDEDFUNCTION(SUBSTRING(@CourCaseNumber,1,2)
答案 0 :(得分:2)
您可以使用case
:
SELECT ((CASE WHEN LEFT(@CourtCaseNumber, 2) >= '50' THEN '19' ELSE '20' END) +
LEFT(@CourtCaseNumber, 2)
) as yyyy
我将“'50'”作为区分几个世纪的合理界限。
编辑:
请勿使用此功能。只需创建一个计算列:
alter table t
add yyyy as ((CASE WHEN LEFT(@CourtCaseNumber, 2) >= '50' THEN '19' ELSE '20' END) +
LEFT(@CourtCaseNumber, 2)
) ;
这样,任何使用该表的人都可以使用该值。
答案 1 :(得分:0)
所以基于@Gordon Linoff的答案功能如下:
create function dbo.your_name
(
@yearYY nvarchar(2)
)
RETURNS nvarchar(4)
as
begin
declare @yearYYYY nvarchar(4)
set @yearYYYY = (SELECT ((CASE WHEN @yearYY >= 50 THEN '19'
ELSE '20' END) + @yearYY
) as yyyy)
return @yearYYYY
end
试验:
select dbo.your_name ('70')