왜 x IS NOT NULL
같지 NOT x IS NULL
않습니까?
이 코드는 :
CREATE TABLE bug_test (
id int,
name text
);
INSERT INTO bug_test
VALUES (1, NULL);
DO $$
DECLARE
v_bug_test bug_test;
BEGIN
RAISE NOTICE '%: %', v_bug_test, (v_bug_test IS NULL);
RAISE NOTICE '%: %', v_bug_test, (v_bug_test IS NOT NULL);
RAISE NOTICE '%: %', v_bug_test, (NOT v_bug_test IS NULL);
SELECT *
INTO v_bug_test
FROM bug_test
WHERE id = 1;
RAISE NOTICE '%: %', v_bug_test, (v_bug_test IS NULL);
RAISE NOTICE '%: %', v_bug_test, (v_bug_test IS NOT NULL);
RAISE NOTICE '%: %', v_bug_test, (NOT v_bug_test IS NULL);
END
$$;
DROP TABLE bug_test;
다음과 같은 출력을 제공합니다.
(,): t
(,): f
(,): f
(1,): f
(1,): f ???
(1,): t
이 출력을 얻을 것으로 예상되는 동안 :
(,): t
(,): f
(,): f
(1,): f
(1,): t <<<
(1,): t
id
실제 코드베이스에서 확인하도록 코드를 전환 했지만 문제를 검색하는 데 몇 시간을 소비 한 후에 만 가능합니다.
rec_variable IS NOT NULL
경우 확인되는 모든 열이 NULL NOT 동안, rec_variable IS NULL
경우 확인하고 있습니다 모든 열이 NULL입니다. 따라서 NOT rec_variable IS NULL
"내부에 무엇이 있습니까?"라는 질문에 대한 대답은 내가 예상 한 것입니다.