我使用了这个SELECT
声明:
SELECT
ID
,SUB_TYPE
,SERVICE_ID
,MENU_TYPE
,MENU_DESCRIPTION
FROM MY_TABLE
WHERE SUB_TYPE = NVL('' , SUB_TYPE)
AND SERVICE_ID = NVL('' , SERVICE_ID)
AND MENU_TYPE = NVL('' , MENU_TYPE)
具有空MENU_TYPE的行不会返回,但我希望这些记录返回
提前致谢
答案 0 :(得分:1)
NULL永远不会等于NULL。在Oracle中,''为NULL。
试试这个:
((:P_MENU_TYPE IS NULL AND MENU_TYPE IS NULL) OR MENU_TYPE = :P_MENU_TYPE)
(我把一个绑定变量:P_MENU_TYPE放在那里'',因为SQL对''来说没有用!)
如果您的意思是,如果参数不为null,则MENU_TYPE必须与参数匹配,并且当参数为null时,可以是包括null的任何内容,然后只需:
(:P_MENU_TYPE IS NULL OR MENU_TYPE = :P_MENU_TYPE)
答案 1 :(得分:0)
您在寻找所有三列都为空的行吗?如果是这样,你想要:
WHERE SUB_TYPE is null
AND SERVICE_ID is null
AND MENU_TYPE in null