请求大神看这条查询sql语句怎么写? oracle数据库 - -

根据 编号ID或者用户名 查询的。 有三种情况。 我该如何编写这条查询语句啊。我用oracle数据库的 1:根据编号ID查, 而用户名可以不输入。 2:根据用户名查询数据,而编号ID可以不输入。 3: 必须2个都输入 才正确查到相关一条数据。我该怎么写啊?怎么判断。 我比如写成这样 selece * from str where id=? or name=? 的话。随便乱输入都可以查到相关数据。。。 但这并不对的正确查询。 求大神按照三种情况写写,多谢了啊
要写成一条sql语句 。不是分开多条sql语句。 我要在网页显示,并能查询到数据库的数据的。
就比如做个 商品一样: 我可以通过那三种情况 查到相关的商品。

p_id 和 p_name 为参数:
假设p_id 不输入的时候,p_id = 0
select * from str
where (p_id = 0 and id = p_id)
or (p_name = '' and name = p_name)
or (p_id <> 0 and p_name = '' and id = p_id and name = p_name)
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-03
几种情况分别用不同的语句
1、selece * from str where id=?

2、selece * from str where name=?
3、selece * from str where id=? and name=?追问

我郁闷了。 我要写成一条sql语句啊

追答

你在程序中构建不同的查询不就可以了吗

第2个回答  2013-08-03
二者都输入,才能正确查询?那只输入一个,会查询到什么?追问

第一,输入编号ID ,用户名可以不输入用户名。只能查到属于该编号ID的 数据。
第二, 用户名输入,编号ID不输入,可以查到该用户名一条以上的数据。
第三,两者都输入的话 必须是正确的,有数据的情况下,才可以查询到。
。 会不会写啊 求大神写成一条select语句 - - - - - 谢谢先啊

追答

你这要求略别致啊。
非要一条的话,可以类似于这样:
select * from str where id like .. and name like ..
用户名和id的默认值取%,这样如果id没输入的话
select * from str where id like .. and name like '%' 就等同于 select * from str where id like ..

当然,真正靠谱的方法还是事先判断一下用户名和编号的输入情况,不同的情况用不同的语句来查询。

第3个回答  2013-08-03
select *from t
where (id =p_id and p_name is null) or
(name =p_name and p_id is null) or
(id=p_id and name=p_name)
相似回答