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'
- 이렇게 수정하니 정상작동한다.
'회사 > DB' 카테고리의 다른 글
[DB / MSSQL] COLLATION (정렬방식) (0) | 2024.10.16 |
---|---|
[DB / MSSQL] BEGIN, COMMIT, ROLLBACK TRAN (2) | 2024.10.16 |
[DB] 인덱스와 파티션 차이 (1) | 2024.09.09 |
[DB / MSSQL] 중복 레코드 관리 (0) | 2024.04.04 |
[MariaDB / MSSQL] VARCHAR 한글은 몇글자로 계산할까? (0) | 2024.03.20 |