這是一個能產生你想要的結果的版本。這個版本反轉@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 with Demo
然後,如果你想將這個函數中,你可以使用:
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 with Demo
結果是:
| COLUMN_0 |
-------------------------------
| 12STD_Orientations_2012_Nov |
現在,如果你需要從表中拉這個,你可以使用:
select dbo.New_Workflow(yourWorkFlowNameCol, yourDateColumn)
from yourtable
什麼客戶端您使用的語言,如果有的話?你有什麼嘗試? – hd1