首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

SQL技术兑现,超级复杂,需要大牛

2013-01-23 
SQL技术实现,超级复杂,需要大牛传入SQL中的值是 01点02点04点05点07点点12点23点09点10点21点1

SQL技术实现,超级复杂,需要大牛
SQL技术兑现,超级复杂,需要大牛


传入SQL中的值是 01点;02点;04点;05点;07点;点;12点;23点;09点;10点;21点;19点;

每天执行的时间点,表示方法
从每天0到23点排序为000000000111011111100000
,0表示这个时间点不执行,1表示执行.
大牛有办法解决吗?

传入的只是一个值,需要在SQL中拆分等
值如下传入SQL中的值是 01点;02点;04点;05点;07点;点;12点;23点;09点;10点;21点;19点;
[解决办法]


drop table #tb
declare @str char(24),@string nvarchar(100)
set @str = '000000000111011111100000'
set @string = '1点,2点,5点,6点,8点,18点,13点,24点'

create table #tb(id int identity(1,1),val char(1))
while(LEN(@str) > 0)
begin
insert into #tb select SUBSTRING(@str,1,1)
set @str = SUBSTRING(@str,2,len(@str)-1)
end

declare @hour int,@hourVal char(1)
set @string = REPLACE(@string,'点','')

while(LEN(@string) > 0)
begin
if CHARINDEX(',',@string) = 0
set @string = @string + ','
set @hour = REPLACE(SUBSTRING(@string,1,CHARINDEX(',',@string)),',','')

select @hourVal = val from #tb where id = @hour

if @hourVal = '1'
print CONVERT(varchar(10),@hour)+'点需要执行'
else
print CONVERT(varchar(10),@hour)+'点不需要执行'

set @string = SUBSTRING(@string,LEN(@hour)+2,LEN(@string)-1)

end

热点排行