name_a 는 조회조건값이 들어가는 변수입니다.
즉 조회조건을 넣고 검색했을 때와 넣지 않고 검색했을 때
이 두가지 경우를 모두 만족하기 위한 조건문입니다.
1-1. name_a IS NULL -- 조회조건이 없을 경우
1-2. 1=1 -- 모든 자료 검색
2-1. name_a IS NOT NULL -- 조회조건이 있을 경우
2-1. name_b = name_a -- name_b 컬럼의 값이 조회조건인 name_a 와 같은 것만 검색
위 1번과 2번 두개 조건이 OR 로 연결되어 조건값 유무에 따라 둘중 하나의 조건이 수행되게 됩니다.
안쪽 괄호는 OR 조건의 양쪽 조건을 구별하기 위한 것으로 빼도 영향은 없습니다.
가장 바깥쪽 괄호는 이 조건 외에 다른 조건과 구별하기 위한 것입니다.
이 괄호를 뺄 경우 다른 조건들이 더 있다면 결과가 달라집니다.
다른 조건들이 AND 조건으로 연결되면 AND 조건이 OR 보다 우선되기 때문에
OR 가 포함된 조건을 사용할때는 항상 괄호에 주의해야 합니다.
예를 들면 우리가 원하는 조건이 (1 OR 2) AND 3 이라고 할때
괄호를 누락하면 1 OR 2 AND 3 이 되고
우선순위에 따라 괄호를 붙여보면
1 OR (2 AND 3) 이 되어 버려 원하는 결과가 안나오게 됩니다.
잘 이해가 안가시면 더하기, 곱하기와 연관지어 생각하셔도 됩니다.
(1 + 2) * 3 = 9
1 + 2 * 3 = 7
저도 시원하네요...... 감사합니다.