这是一个可以产生您想要的结果的版本。此版本反转值的当前值,然后在字符串中@str
查找第一个:_
declare @str varchar(100) = '12STD_Orientations_Workflow'
declare @dt datetime = '2012-01-01'
select left(@str, len(@str) - charindex('_', REVERSE(@str)))
+ '_'
+ cast(YEAR(@dt) as char(4))
+ '_'
+ CONVERT(char(3), @dt, 109)
请参阅带有演示的 SQL Fiddle
然后如果你想把它放在一个函数中,你可以使用:
create function dbo.New_Workflow
(
@origName varchar(200),
@dt datetime
)
RETURNS varchar(200)
AS
BEGIN
declare @newvalue varchar(100)
select @newvalue = left(@origName, len(@origName) - charindex('_', REVERSE(@origName)))
+ '_'
+ cast(YEAR(@dt) as char(4))
+ '_'
+ CONVERT(char(3), @dt, 109)
RETURN @newvalue
END;
然后调用它你可以使用:
declare @str varchar(100) = '12STD_Orientations_Workflow'
declare @dt datetime = '2012-11-01'
select dbo.New_Workflow(@str, @dt)
请参阅带有演示的 SQL Fiddle
结果是:
| COLUMN_0 |
-------------------------------
| 12STD_Orientations_2012_Nov |
现在,如果您需要从表中提取它,您将使用:
select dbo.New_Workflow(yourWorkFlowNameCol, yourDateColumn)
from yourtable