这种排序 能否实现
Tab_a
id a_field,b_field
3 a3 b3
4 a4 b4
....................
....................
10 a10 b10
....................
....................
12 a12 b12
...................
....................
....................
112 a112 b112
根据一个 字符串 来排序
eg : str1= "12,3,112,265,10 "
12,3,112,256,10 分别是指Tab_a 中的ID
希望将Tab_a 表中的记录按 ID 为 str1 中的顺序来来排
(如果Tab_a 没有与 str1[i] 相等的 id 就不考虑)
[解决办法]
---?
select * from tab_a order by charindex(id, '12,3,112,265,10 ')
[解决办法]
declare @str varchar(200)
set @str= '12,3,112,265,10 '
select * from 表 order by charindex( ', '+rtrim(id)+ ', ' , ', '+@str+ ', ')
[解决办法]
--例子
create table Tab_a(id int,a_field varchar(10),b_field varchar(10))
insert tab_a
select 3 , 'a3 ', 'b3 '
union select 265 , 'a4 ', 'b4 '
union select 10 , 'a10 ', 'b10 '
union select 12 , 'a12 ', 'b12 '
union select 3 , 'a112 ', 'b112 '
select * from tab_a order by charindex(rtrim(id), '12,3,112,265,10 ')
drop table tab_a
/*
id a_field b_field
----------- ---------- ----------
12 a12 b12
3 a112 b112
3 a3 b3
265 a4 b4
10 a10 b10
(5 row(s) affected)
*/
[解决办法]
create table Tab_a(id int,a_field varchar(10),b_field varchar(10))
insert tab_a
select 3 , 'a3 ', 'b3 '
union select 265 , 'a4 ', 'b4 '
union select 10 , 'a10 ', 'b10 '
union select 12 , 'a12 ', 'b12 '
union select 3 , 'a112 ', 'b112 '
union select 112 , 'a12 ', 'b12 '
union select 13 , 'a112 ', 'b112 '
select * from tab_a order by charindex( ', '+rtrim(id)+ ', ', ',12,3,112,265,10, ')
drop table tab_a
[解决办法]
好快啊~厉害
[解决办法]
用类似 charindex(rtrim(id), '12,3,112,265,10 ') 这样的表达式不稳妥,当对 1/11/12/112/ 这些ID处理时会存在歧异。
[解决办法]
ls 说的对,刚刚急着回复没太注意 :)
[解决办法]
if exists (select name from demo1.dbo.sysobjects where id=object_id( 'tab_a '))
drop table tab_a
create table Tab_a(id int,a_field varchar(10),b_field varchar(10))
insert tab_a
select 3 , 'a3 ', 'b3 '
union select 265 , 'a4 ', 'b4 '
union select 10 , 'a10 ', 'b10 '
union select 12 , 'a12 ', 'b12 '
union select 3 , 'a112 ', 'b112 '
declare @str varchar(200)
set @str= '12,3,112,265,10 '
select *
from tab_a order by charindex(cast(id as varchar(20)),@str)
--result
12a12b12
3a112b112
3a3b3
265a4b4
10a10b10
[解决办法]
结贴吧,子陌的合适
[解决办法]
楼上都厉害啊,佩服佩服·