~~~~~sql server字符数数字~~~~~
有下面的一个字符串,被分为两行:
declare @str varchar(100)
set @str='|01|09|02|10|03|11|04|12|'+char(10)+'|05|13|06|14|07|15|08|16|'
select @str
--结果
--|01|09|02|10|03|11|04|12|
--|05|13|06|14|07|15|08|16|
现在我给一个数比如declare @s varchar(2) set @s='10'
我首先找到10的位置,然后我从10后的那个数开始数,数10个数
(说明:第一行数完以后转第二行,第二行完了从第一行第一个数开始接着数)
03-11-04-12-05-13-06-14-07-15
这次数到15,那么我把15跟他对应的在同一列的那个数,也就是11一同取出,结果:11,15
再举个例子,比如我set @s='07',那么先找到07,从07后第一位开始数7个数
15-08-16-01-09-02-10,这里数到10,就取出10以及10所在列14两个值,结果:10,14
不知道怎么编程用数据库实现。这些数字的位置是固定的。
15
[解决办法]
08
[解决办法]
16
[解决办法]
'
--select @str
declare @s varchar(2) set @s='07'
DECLARE @t TABLE(id INT IDENTITY,num VARCHAR(10))
INSERT INTO @t --此处楼主在存储过程中去处理吧
VALUES ('01'),('09'),('02'),('10'),('03'),('11'),('04'),('12')
,('05'),('13'),('06'),('14'),('07'),('15'),('08'),('16')
--SELECT * FROM @t
DECLARE @i INT
SELECT @i=(id+CAST(@s AS INT)) % 16 FROM @t WHERE num=@s
SELECT @i
SELECT num FROM @t
WHERE id=@i OR id=@i+8
[解决办法]
位置什么的 是固定的 把他看作临时表的数据可以不?
--不知道怎么编程用数据库实现。这些数字的位置是固定的。
Declare @tmptable table (tid int,tval1 char(5),tval2 char(5))
insert @tmptable
select 1,'01','05' union all
select 2,'09','13' union all
select 3,'02','06' union all
select 4,'10','14' union all
select 5,'03','07' union all
select 6,'11','15' union all
select 7,'04','08' union all
select 8,'12','16'
select * from @tmptable
declare @s varchar(2)
set @s='10'
set @s='07'
set @s='02'
select tt.tval1,tt.tval2
from @tmptable tt
where tt.tid= (
select DataYouWant= case when (t.tid+@s-8)>0 then (t.tid+@s-8) else (t.tid+@s) end
from @tmptable t
where t.tval1=@s or t.tval2=@s
)
/*
11,15
10,14
03,07
*/