读书人

查询排序的解决方案

发布时间: 2012-01-18 00:23:26 作者: rapoo

求一个查询排序的解决方案

SQL code
 

declare @c varchar(8000)
set @c ='1,3,2,5,8,4,9'
Select ID,
Num,
Name
From tablea
Where @c= ''
or @c is Null
or Charindex(','+Ltrim(Num)+',',','+Isnull(@c,'')+',')>0

上面的语句执行后的结果样式如:

ID Num Name
-------------------------------------------
1 .. ..
2 .. ..
3 .. ..
4 .. ..
5 .. ..
8 .. ..
9 .. ..


我想要的结果是:

ID Num Name
-------------------------------------------
1 .. ..
3 .. ..
2 .. ..
5 .. ..
8 .. ..
4 .. ..
9 .. ..



[解决办法]
SQL code
declare @tb table(Num varchar(5))insert into @tb select '1'insert into @tb select '2'insert into @tb select '3'insert into @tb select '4'insert into @tb select '5'insert into @tb select '6'insert into @tb select '7'insert into @tb select '8'insert into @tb select '9'insert into @tb select '10'declare @c varchar(8000)set @c  ='1,3,2,5,8,4,9'Select        Num  From @tb  Where @c= ''         or @c is Null         or Charindex(','+Ltrim(Num)+',',','+Isnull(@c,'')+',')>0  order by Charindex(','+Ltrim(Num)+',',','+Isnull(@c,'')+',')
[解决办法]
SQL code
declare @c varchar(8000)set @c  ='1,3,2,5,8,4,9'Select ID,       Num,       Name  From tablea  Where @c= ''         or @c is Null         or Charindex(','+Ltrim(Num)+',',','+Isnull(@c,'')+',')>0order by Charindex(','+Ltrim(Num)+',',','+Isnull(@c,'')+',')
[解决办法]
declare @c varchar(8000)
set @c ='1,3,2,5,8,4,9'
declare @w xml
set @c ='1,3,2,5,8,4,9'
set @c =replace('<b><a>1,3,2,5,8,4,9</a></b>',',','</a><a>')
set @w=@c

SELECT T.c.value('.','int') as ID
FROM @w.nodes('/b/a') T(c)

读书人网 >SQL Server

热点推荐