Oracle 动态位置取决于参数是否为NULL

Oracle 动态位置取决于参数是否为NULL,oracle,Oracle,我想按学生的id或姓名搜索学生 是否可以在Oracle数据库中这样使用动态数据库: -如果参数:name为NULL,则其中by id=:id -如果参数:id为NULL,则where by name=:name 选择ID、姓名、电话 来自学生 哪里 谢谢您可以将这些查询与或组合起来 SELECT ID, NAME, PHONE FROM STUDENTS WHERE (:name is null and id = :id) OR (:id is null and name=:name) 另

我想按学生的id或姓名搜索学生

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


选择ID、姓名、电话
来自学生
哪里


谢谢

您可以将这些查询与或组合起来

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

另一种选择是在WHERE子句中使用大小写表达式

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;
祝你好运。

看看COALESCE()函数。我想这就是你需要的: