首页 新闻 会员 周边 捐助

SQL语句怎么在where XX=已经定死的情况下,查询XX任何情况

0
悬赏园豆:30 [已解决问题] 解决于 2017-09-26 15:29

    公司有个项目是这样的,因为封装性,已经把查询条件定死在where XX=。例如XX的值有1,2,0这三种情况。怎么写SQL语句可以查询所有情况

比如 SELECT * FORM TABLE1 WHERE XX=要填写的

从而达到一条语句可以查询这三种情况呢

鲁广广的主页 鲁广广 | 初学一级 | 园豆:8
提问于:2017-09-26 11:37
< >
分享
最佳答案
1

1、分三种情况分别查,然后程序里把数据合并

2、

把 (要填写的) 写成 (0 and xx=1 and xx=2)

拼接完整就是 (SELECT * FORM TABLE1 WHERE XX=0 and xx=1 and xx=2)

3、如果有单引号, SELECT * FORM TABLE1 WHERE XX=‘要填写的’ 

把 (要填写的) 写成 (0’ and xx=‘1’ and xx=‘2)

拼接完整就是 (SELECT * FORM TABLE1 WHERE XX=‘0’ and xx=‘1’ and xx=‘2’)

 

注意:2、3这两种就是sql简单注入的方法,如果你用2、3方法成功了,说明你们公司这个查询方法有很大的安全隐患,容易被别人sql注入。

收获园豆:30
海之殇 | 菜鸟二级 |园豆:500 | 2017-09-26 14:24

没办法,本来是局域网应用不知道为什么非得用B/S架构来做,搞的现在整个软件部门都在做窗体兼容。

现在这个因为整个项目都是用代码生成器做的,然后有好多人在这基础上各自做各自的模块,今天把项目给我了,我不敢随便在底层加减函数。

我先用的SQL注入的方法试下吧

鲁广广 | 园豆:8 (初学一级) | 2017-09-26 14:32

那个应该用  OR逻辑符

鲁广广 | 园豆:8 (初学一级) | 2017-09-26 14:36

@鲁广广: 嗯嗯,没看清你的要求,不过还是建议你用第一种方法

海之殇 | 园豆:500 (菜鸟二级) | 2017-09-26 14:38
其他回答(3)
0

没有封装性一词。如果从程序角度看的话直接在最下面的sql处统一拦截后做替换,如果从db角度看的话你直接把数据同步到另一个表里面就完了。

Daniel Cai | 园豆:10424 (专家六级) | 2017-09-26 11:44

我的意思是,程序的sql操作的函数我不能改,只能修改逻辑层那一个where xx=  这一个

支持(0) 反对(0) 鲁广广 | 园豆:8 (初学一级) | 2017-09-26 11:46
1

SELECT * FORM TABLE1 WHERE XX in(0,1,2)

吴瑞祥 | 园豆:29449 (高人七级) | 2017-09-26 13:54
0

 有点扯淡,不能改就别做了,还有这种事

jqw2009 | 园豆:2341 (老鸟四级) | 2017-09-26 13:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册