mssql数据库字符串格式化问题
现有SN表如下:
SNID SNFormat
1 "CK" - YYYY - MM - DD - [000]
2 "WWL" - YYYY - MM - DD - [000]
3 "WWT" - YYYY - MM - DD - [000]
4 "SK" - yyyy - mm - dd - [000]
5 "DF" - yyyy - mm - dd - [000]
6 "JT" - yyyy - mm - dd - [000]
7 "JHD" - yyyy - mm - dd - [000]
Bill表如下:
SNID MaxNo
1 5
2 4
3 6
4 111
5 0
6 1
7 20
现在需求如下:我传入SNID和日期返回一个格式化后的的值。
比如:我传入SNID=1,日期=2013-07-24,
那么返回的值应该为CK-2013-MM-DD-006
我传入snid=4,日期=2013-07-24,
那么返回的值应该为SK-yyyy-mm-dd-112
还望DBA帮帮忙,先谢了。
数据库 格式化 MS?SQL
[解决办法]
Declare @ID int
Declare @Adate datetime
set @ID=1
Set @Adate='2013-07-24'
Declare @table1 table (SNID int ,SNFormat varchar(50))
Declare @table2table(SNID int, MaxNo int)
insert @table1
select 1,N'"CK" - YYYY - MM - DD - [000]'union all
select 2,N'"WWL" - YYYY - MM - DD - [000]'union all
select 3,N'"WWT" - YYYY - MM - DD - [000]'union all
select 4,N'"SK" - yyyy - mm - dd - [000]'union all
select 5,N'"DF" - yyyy - mm - dd - [000]'union all
select 6,N'"JT" - yyyy - mm - dd - [000]'union all
select 7,N'"JHD" - yyyy - mm - dd - [000]'
insert @table2
select 1, 5union all
select 2, 4union all
select 3, 6union all
select 4, 111union all
select 5, 0union all
select 6, 1union all
select 7, 20
select t1.SNID,t2.MaxNo,t1.SNFormat
,AfterReplace=Replace(Replace(t1.SNFormat,' ',''),'"','')
,FormatStr= Replace(Replace(Replace(Replace(t1.SNFormat,' ',''),'"',''),'yyyy-mm-dd',convert(char(10),@Adate,120)),'[000]',right('000'+cast(t2.MaxNo+1 as varchar),3))
from @table1 t1
join @table2 t2 on t1.SNID= t2.SNID
--where t1.SNID=@ID
/*
SNIDMaxNoSNFormatAfterReplaceFormatStr
15"CK" - YYYY - MM - DD - [000]CK-YYYY-MM-DD-[000]CK-2013-07-24-006
24"WWL" - YYYY - MM - DD - [000]WWL-YYYY-MM-DD-[000]WWL-2013-07-24-005
36"WWT" - YYYY - MM - DD - [000]WWT-YYYY-MM-DD-[000]WWT-2013-07-24-007
4111"SK" - yyyy - mm - dd - [000]SK-yyyy-mm-dd-[000]SK-2013-07-24-112
50"DF" - yyyy - mm - dd - [000]DF-yyyy-mm-dd-[000]DF-2013-07-24-001
61"JT" - yyyy - mm - dd - [000]JT-yyyy-mm-dd-[000]JT-2013-07-24-002
720"JHD" - yyyy - mm - dd - [000]JHD-yyyy-mm-dd-[000]JHD-2013-07-24-021
*/