首页 新闻 会员 周边

db2按in中条件排序,条件非int型

0
悬赏园豆:30 [已解决问题] 解决于 2016-09-23 15:17

如题。比如,表字段有id name,数据为 aa a ,bb b, cc c。

我想select出来按aa,bb,cc。查出来结果为 a b c。

网上找到的是order by instr(),但是中间条件不知道怎么写。

写instr(''aa','bb','cc'',id)报错。

lannoy的主页 lannoy | 菜鸟二级 | 园豆:212
提问于:2016-09-23 11:13
< >
分享
最佳答案
0

什么意思?select name from table order by id这样子?

收获园豆:30
顾晓北 | 专家六级 |园豆:10844 | 2016-09-23 11:58

不是,是按我输入的。select name from table where Id in (aa,bb,cc).再按aa,bb,cc排序

lannoy | 园豆:212 (菜鸟二级) | 2016-09-23 13:36

@lannoy: 没毛病吧?select name from table where Id in (aa,bb,cc).你这个最终也肯定是先筛选出结果来再排序,in的操作只是一个条件而已吧???instr是什么?instr是判断字符串中是否有东西,你那instr(''aa','bb','cc'',id)当然报错,是驴头不对马尾,难不成你筛选的条件里如果还有dd,那就是instr(''aa','bb','cc'','dd',id)???

顾晓北 | 园豆:10844 (专家六级) | 2016-09-23 13:44

@顾晓北: 我是小白。那你能给个主意不?我是看着这个图说的。

lannoy | 园豆:212 (菜鸟二级) | 2016-09-23 13:56

@lannoy: 网上查了下,oracle确实可以这么用,但是你的写法不对,你看清楚,人家是instr('111.222.333',orderid)你是什么?你是instr('111','222','333',orderid)

顾晓北 | 园豆:10844 (专家六级) | 2016-09-23 14:11

@顾晓北: 我这是字符串所以,我里面是这样写的(''aa','bb','cc'',id),你看上面。我没有像你说的那样呀。

==

lannoy | 园豆:212 (菜鸟二级) | 2016-09-23 14:20

@lannoy: 我确实不知道在oracle的int跟字符串关于这个方法的写法区别,但我知道的是,你的写法,'',这本身就表示一个空格了,那么aa会解析为sql语句,显然,aa什么也不是,那就出错了。。。

顾晓北 | 园豆:10844 (专家六级) | 2016-09-23 14:36

@顾晓北: 其实,我也试过这个加括号的,就是('('aa')')这种。也失败了。

lannoy | 园豆:212 (菜鸟二级) | 2016-09-23 14:55

@lannoy: 你先这样,你先只留一个‘’,instr('aa,bb,cc',orderid)先这样试试。

顾晓北 | 园豆:10844 (专家六级) | 2016-09-23 15:05

这个就对了。谢谢。

lannoy | 园豆:212 (菜鸟二级) | 2016-09-23 15:16

@顾晓北: 豆不多,意思一下。O(∩_∩)O

lannoy | 园豆:212 (菜鸟二级) | 2016-09-23 15:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册