一个有关order by charindex的问题

czp98069806 2008-05-01 07:31:50
select * from table1 where id in (183,200,211,145,89,139,83,45) order by charindex(ltrim(id),'183,200,211,145,89,139,83,45')

每次查询出来的结果都变成了183,83,200,211,145,45,89,139 后两位相同的总是显示到一起去了,不知道为什么,请各位高手帮忙看看,数据可能会上万条.
...全文
322 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyinsky0039 2010-04-22
  • 打赏
  • 举报
回复
学习了,谢谢
hbxftpwj 2009-12-03
  • 打赏
  • 举报
回复
czp98069806 2008-05-01
  • 打赏
  • 举报
回复
多谢多谢..
结帖了..
Limpire 2008-05-01
  • 打赏
  • 举报
回复
CHARINDEX
返回字符串中指定表达式的起始位置(第一个位置)。

183,200,211,145,89,139,83,45

183 --> 1

83 --> 2:不会去找倒数第二个数83

强制找',83,'而不是'83',
czp98069806 2008-05-01
  • 打赏
  • 举报
回复
嗯,解决了,谢谢小楼.再顺便问一下,为什么会出现这种现象呢?
Limpire 2008-05-01
  • 打赏
  • 举报
回复
前后加逗号限定
Limpire 2008-05-01
  • 打赏
  • 举报
回复
select * from table1 where id in (183,200,211,145,89,139,83,45) order by
charindex(','+ltrim(id)+',',',183,200,211,145,89,139,83,45,')

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧