db의 table comment 조회 관련 쿼리 질의 드립니다. 0 5 666

by notallpara [Tibero] tibero sys [2022.03.10 14:03:05]


현재 db의 owner 조건 5개와 table_name조건 4개 cooment is null인것으로 조회를 하려는데, 조회 결과 is null조건이 안먹히는지 null이 아닌 것도 나오는 현상이 발생합니다. 혹시 아래의 쿼리가 문제가 있는지 여쭙을 수 있을까요?? 

 

SELECT
    *
FROM
    ALL_COL_COMMENTS
WHERE
    OWNER = 'parameter1'
    OR OWNER = 'parameter2'
    OR OWNER = 'parameter3'
    OR OWNER = 'parameter4'
    OR OWNER = 'parameter5'
    AND TABLE_NAME NOT LIKE '%parameter6%'
    AND TABLE_NAME NOT LIKE '%parameter7%'
    AND TABLE_NAME NOT LIKE '%parameter8%'
    AND TABLE_NAME NOT LIKE '%parameter9%'
    AND COMMENTS IS NULL
ORDER BY COLUMN_NAME;

 

by 우주민 [2022.03.10 14:22:17]
SELECT
    *
FROM
    ALL_COL_COMMENTS
WHERE
    (OWNER = 'parameter1'
    OR OWNER = 'parameter2'
    OR OWNER = 'parameter3'
    OR OWNER = 'parameter4'
    OR OWNER = 'parameter5'
    )
    AND TABLE_NAME NOT LIKE '%parameter6%'
    AND TABLE_NAME NOT LIKE '%parameter7%'
    AND TABLE_NAME NOT LIKE '%parameter8%'
    AND TABLE_NAME NOT LIKE '%parameter9%'
    AND COMMENTS IS NULL
ORDER BY COLUMN_NAME;

 

or 조건을 다른 조건과 별개로 묶어서 써야 할듯 싶습니다....

 

원래대로의 조건문에서는 단적으로 아래와 같이

comments is null

or owner = 'parameter'

같은 형태의 조건문이 되어 버리겠네요.

(컬럼 조건문이 이런식으로 해석이 될 수 있다... 를 보여주기 위한 한 예로 저 두 조건문을 추출했습니다.)

 

 


by notallpara [2022.03.10 14:54:04]

생각하지 못한 방향으로 해석해버리는군요.... 조인을 통해 별도로 조건을 주는 방향으로 해결해보겠습니다ㅎㅎ 감사합니다!!!


by 마농 [2022.03.10 15:03:00]

1. OR 조건은
- 괄호로 묶어줘야 합니다.
- IN 으로 변경하면 간결합니다.
2. 정렬기준은
- 컬럼명만 가지고 하기 보다는 앞에 오너가 있어야 할 것 같습니다.
- COLUMN_NAME 보다는 COLUMN_ID 가 더 적당할 듯 합니다.


by notallpara [2022.03.10 16:12:18]

말씀 하신 대로 괄호 처리 및 IN 활용하니 훨씬 깔끔해지고 self JOIN으로 처리 할 때 보다 속도도 빠르네요.... 감사합니다!!! ㅎㅎ

그런데 추가로 정렬 기준에 COLUMN_ID는 "all_tab_columns"로 조회가 가능한 것으로 확인되는데 일부러 조인하여서 활용 하는게 더 낫다고 판단해 주신 건가요??


by 마농 [2022.03.10 16:32:07]

아! column_id 를 사용하려면 조인이 필요하겟네요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입