select ptp.id from [dbo].[Pic_Temp_Process] ptp where ptp.id in
(5599, 1763317, 1130129, 505992, 174477, 23565, 1192438) order by
charindex(','+convert(varchar,ptp.id)+',',',5599, 1763317, 1130129, 505992, 174477, 23565, 1192438,')
我的语句
5599, 1763317, 1130129, 505992, 174477, 23565, 1192438
顺序应该是按这样子
但实际返回给我
请问in的排序sql怎样写,谢谢!
看你截图应该是sql server 吧,用我下面截图这个试试,我以前用着是可以的。其实就是你上面的把convert(varchar,ptp.id)改成rtrim(cast(pip.id as varchar(10)))
我以前也这样用,也没发现什么问题,但就是这些id 我才发现这个并不对,按照你的写法是一样的,并没有按照其顺序排序
如图
charindex后面中不能包含空格,有空格就不行
order by 后面直接根据id排序
它不是id 的顺序 你可以仔细看看,1192438 明显顺序不对,不知道它走的是什么顺序
@光明中的黑手: 语法是对的,你在varchar后面带上大小,varchar(10)试试
@小光: 我都试过了,不知道为啥就是不行
@小光: 我知道了,charindex后面中不能包含空格,有空格就不行
@光明中的黑手: 嗯