これは、あなたが望む結果を生み出すバージョンです。このバージョンでは、値の現在の値を逆にして、文字列@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