mysql/sqlserver where in 传参数的问题

来源:互联网 发布:火警抢购软件 编辑:程序博客网 时间:2024/05/16 15:00

参数:@p0=1,2,3,4

1.我们普通的查询如下:

select *from table_name t where t.field1in (1,2,3,4,...);


如果需要传参数的话

select *from table_name t where t.field1in (@p0);

这样最终的sql是select *from table_name t where t.field1in (‘1,2,3,4,...‘);

只能查出t.field1=1的结果(具体为什么能查出第一个记录待研究)


要想所有参数都能查出的话这样是不行的,这时候需要使用第二中解决方案


2.find_in_set 使用这个方法来搞定

select *from table_name t where  find_in_set(t.field1,'1,2,3,4');

下面是相关排序和sqlserver的解决方案

MySQL/sqlserver查询in操作 查询结果按in集合顺序显示

select * from ibs6_terminal_adv_inf where id in (16,14,15) order by field(id,16,14,15)

select * from ibs6_terminal_adv_inf where id in (16,14,15) order by find_in_set(id,'16,14,15')

select * from ibs6_terminal_adv_inf where id in (16,14,15) order by substring_index('16,14,15',id,1)

结果就是按顺序显示了

sqlserver 用以下的语句

select * from ibs6_terminal_adv_inf where id in (16,14,15)  order by CHARINDEX(','+ltrim(id)+',',',16,14,15,')"


这个方法没有测试过,有测试过的同学可以发一下结果


注意了,里面有很多逗号,一个都不能少哦~~~



原创粉丝点击