회사/DB
[DB/SQL] AND / OR 우선순위
daykim
2024. 9. 25. 10:15
https://goguri.tistory.com/460
[SQL] 의외로 햇갈리는 WHERE절의 AND와 OR 연산자 우선순위.
연산자 우선 순위를 자세히 알고 싶으면 해당 링크로 가져 확인 하자. ( 링크 : 우선순위 규칙 ) AND와 OR은 비슷한 처리 방식이라 같은 우선순위로 생각하기 쉬운데 SQL에서는 AND가 OR 보다 우선순
goguri.tistory.com
AND (A.DB_NM = 'SL') OR (A.TBL_NM = 'SL') OR (A.TBL_CMTRY_NM LIKE 'SL' + '%')
AND A.STD_YN = 'Y'
- 이렇게 조회했더니, STD_YN = 'N'인 값도 조회가 되고 있었다.
- GPT에 물어보니 이렇게 답해주었다.
AND가 OR보다 우선순위가 높은걸로 알고있는데 왜 이런일이 발생한건가 찾아봤다.
WHERE 1=1
AND (A.DB_NM = 'SL')
OR (A.TBL_NM = 'SL')
OR (A.TBL_CMTRY_NM LIKE 'SL' + '%')
AND A.STD_YN = 'Y'
- 쿼리는 아마 이렇게 취급된 것이다.
위의 쿼리를보면 OR절 뒤에 괄호가 사용되었다. 괄호가 우선순위가 더 높기 때문에, AND보다 OR이 사용된것이 우선순위가 더 높게 여겨져 발생한 일이라고 한다.
AND ((A.DB_NM = 'SL') OR (A.TBL_NM = 'SL') OR (A.TBL_CMTRY_NM LIKE 'SL' + '%'))
AND A.STD_YN = 'Y'
- 이렇게 수정하니 정상작동한다.