在SQL查询中传递参数

3

我正在从程序中传递where子句参数值,但是当我发送至少一个值时,我可以得到结果,但是如果我将所有参数都设置为null,则没有输出,我想要这样的查询:如果所有参数都被设置为null,则显示数据库中的所有记录。

以下是检索一个条件满足值的查询:

SELECT * 
  FROM STUDENT
  LEFT JOIN COURSE
    ON STUDENT.COURSE_ID = COURSE.COURSE_ID
 WHERE STUDENT.STD_ID = null
   OR STUDENT.STD_NAME = null
   OR STUDENT.STD_START_DATE = null
   OR STUDENT.STD_END_DATE = null
   OR STUDENT.STD_GENDER = null
   OR STUDENT.COURSE_ID = null;

2
STD_START_DATE = null 不起作用,您需要使用 STD_START_DATE IS null - user330315
你是如何从程序中传递变量的?我在你的示例SQL语句中没有看到任何参数。 - Boneist
2个回答

2

请尝试以下操作:

SELECT *
FROM   STUDENT
       LEFT JOIN COURSE
              ON STUDENT.COURSE_ID = COURSE.COURSE_ID
WHERE  STUDENT.STD_ID IS NULL
        OR STUDENT.STD_NAME IS NULL
        OR STUDENT.STD_START_DATE IS NULL
        OR STUDENT.STD_END_DATE IS NULL
        OR STUDENT.STD_GENDER IS NULL
        OR STUDENT.COURSE_ID IS NULL 

实际上我的问题是,我需要一个查询,如果以上查询中所有值都被赋为null,我希望执行另一个查询,该查询获取所有数据而不带任何条件,例如SELECT * FROM STUDENT LEFT JOIN COURSE ON STUDENT.COURSE_ID = COURSE.COURSE_ID。 - user2218550

0

已经找到解决方案:

SELECT *
FROM
STUDENT S,COURSE C
WHERE
S.STD_ID like '%'||null||'%' and S.STD_NAME like '%'||null ||'%' and S.STD_START_DATE like '%'||null ||'%' and S.STD_END_DATE like '%'||null ||'%' and S.STD_GENDER like '%'||null||'%'
and S.COURSE_ID like '%'||null||'%' and S.COURSE_ID=C.COURSE_ID

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接