读书人

mssql数据库字符串格式化有关问题

发布时间: 2013-08-01 15:23:18 作者: rapoo

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帮帮忙,先谢了。mssql数据库字符串格式化有关问题

数据库 格式化 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
*/

读书人网 >SQL Server

热点推荐