动态取决于参数是否为NULL

时间:2018-06-21 02:13:13

标签: oracle

我要按学生的ID或姓名搜索。

是否可以在Oracle数据库中像这样使用动态: -如果参数:name为NULL,则id =:id -如果参数:id为NULL,则按名称=:name

SELECT ID, NAME, PHONE FROM STUDENTS WHERE .......

谢谢

2 个答案:

答案 0 :(得分:2)

您可以将那些查询与OR组合在一起

SELECT ID, NAME, PHONE
FROM STUDENTS
WHERE (:name is null and id = :id) OR (:id is null and name=:name)

答案 1 :(得分:0)

另一种替代方法是在WHERE子句中使用CASE表达式

SELECT ID, NAME, PHONE
  FROM STUDENTS
  WHERE 1 = CASE
              WHEN :ID IS NOT NULL AND ID = :ID THEN 1
              WHEN :ID IS NULL AND NAME = :NAME THEN 1
              ELSE 0
            END;

好运。