无法获取列中具有空值的记录

时间:2015-08-04 07:23:05

标签: sql oracle

以下查询获取所有行,但即使特定记录的一列为空,它也将获取除该记录之外的所有记录。 我想要一个查询来获取所有值,而不管它是否在列中具有空值。

 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

2 个答案:

答案 0 :(得分:1)

我认为你应该改变where条件:

SELECT *
FROM
STUDENT S,COURSE C
WHERE
S.COURSE_ID=C.COURSE_ID

此选择将获取除COURSE_ID之外的ani列中具有null或非null值的所有记录。

好的,你应该使用它:

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

答案 1 :(得分:0)

SELECT *
FROM
      STUDENT S
      FULL OUTER JOIN COURSE C 
           ON S.COURSE_ID = C.COURSE_ID

此select选取任何列中包含null或非null值的所有记录。