1. 검색 조건 조합

SELECT 쿼리를 사용하여 검색 시 실제로는 하나의 조건만 사용하는 경우보다 2개 이상의 조건식을 조합해 검색하는 경우가 많이 있습니다. 이렇게 조건식을 조합할 때 사용하는 AND, OR, NOT 3가지에 대해서 알아 보겠습니다.

    1. AND 조건

복수 조건을 조합할 때 AND를 많이 사용합니다.

AND는 논리 연산자의 하나로 좌우에 항목이 필요한 이항 연산자입니다.

좌우의 조건식이 모두 참일 경우 AND는 참을 반환합니다. 그래서 좌우 조건식, 즉, 모든 조건을 만족할 경우 조건식은 참이된다라고 할 때 AND를 사용합니다.


“SELECT * FROM 테이블명 WHERE 조건식1 AND 조건식2;”


AND는 위와 같은 문법으로 사용합니다.


AND 연산은 조건을 만족하는 레코드을 집합으로 표현했을 때 이들 집합이  겹쳐지는 부분, 즉 교집합으로 계산 할 수 있습니다. 그렇기 때문에 AND로 조건식을 연결하면 모든 조건을 만족하는 레코드를 검색할 수 있습니다.

    1. OR 조건

OR는 어느 쪽이든 하나만 참이 되면 조건식은 참이된다라고 할 경우에 사용합니다.

OR도 AND와 마찬가지로 좌우 항목이 모두 필요한 이항 연산자입니다. AND와 달리 어느 쪽이든 조건을 만족하면 결과는 참이 됩니다. 대신 모든 조건이 거짓일 경우 결과는 거짓이 됩니다.


“SELECT * FROM 테이블명 WHERE 조건식1 OR 조건식2;”


OR는 위와 같은 문법으로 사용합니다.


조건을 만족하는 레코드를 집합으로 표현했을 때 AND 연산과는 다르게 합집합으로 계산할 수 있습니다. 그래서 어느 쪽이든 조건을 만족하는 레코드를 모두 검색할 수 있습니다.

    1. AND와 OR 사용 시 주의점

조건식을 조합을 하다보면 AND와 OR를 혼합하여 사용하는 경우가 있습니다. 그렇게 사용했을 때 자신이 생각했던 결과와 다른 결과를 보고 당황한 경우들이 있을겁니다.

그 이유는 AND와 OR의 경우 연산 우선 순위가 있기 때문입니다.

결론을 먼저 얘기하면 AND가 OR보다 연산 우선 순위가 높습니다.

만약 이런 조건이 있다고 생각해 보겠습니다.

“WHERE 조건1 OR 조건2 AND 조건3 OR 조건4”

위 조건식을 우선순위를 쉽게 보기 위해서 아래와 같이 생각할 수 있습니다.


“WHERE 조건1 OR (조건2 AND 조건3) OR 조건4”


즉, 3개의 조건식이 OR로 연결된 것과 같다고 생각하면 됩니다.

만약 두개의  OR연산은 AND로 연산하고 싶다면 아래와 같이 괄호로 우선 순위를 변경하면 됩니다.

“WHERE (조건1 OR 조건2) AND (조건3 OR 조건4)”

    1. NOT 조건

NOT 연산자는 오른쪽에만 항목을 지정하는 단항 연산자입니다.

오른쪽에 지정한 조건식의 반대값을 반환합니다. 만약 참을 반환하는 조건식에 NOT을 사용하면 거짓을 반환하게 됩니다.


레코드를 집합으로 표현 했을 때 합집합 영역을 제외한 그 나머지 부분을 나타낼 수 있습니다.

  1. 패턴매칭

= 연산자를 사용할 경우 셀의 데이터 값이 완전하게 동일한 것들을 검색합니다. 하지만 특정 문자나 문자열이 포함되어 있는지 검색할 경우가 있습니다. 이런 경우 사용하는 것이 패턴 매칭 또는 부분 검색입니다. LIKE 를 사용하면 문자열의 부분 검색이 가능합니다.

간단한 패턴 매칭이라면 LIKE로 충분하지만 조금 더 복잡한 패턴을 매칭하는 경우에는 정규 표현식을 사용하는 것을 추천합니다.

    1. LIKE로 패턴 매칭

LIKE 연산자는 아래와 같이 사용이 가능합니다.


“컬럼명 LIKE ‘패턴' ”


왼쪽에는 매칭 대상을 지정하고 오른쪽에는 패턴을 문자열로 지정합니다. 대신 수치형 상수는 사용할 수 없고 메타문자 (%, _)는 사용할 수 있습니다.

와일드카드라고도 불리는 메타문자는 패턴 매칭 시 임의의 문자 또는 문자열에 매치하는 부분을 지정하기 위해 쓰이는 특수 문자입니다.

또한 와일드카드로 자주 쓰이는 애스터리스크(*)는 LIKE에서는 사용할 수 없습니다.



%

임의의 문자열을 의미

_

임의의 문자 하나를 의미

[표 7. LIKE 연산자의 패턴에서 특수 문자의 의미]


패턴 매칭을 사용하여 검색시 3가지 방법을 이용할 수 있습니다. 전방 일치, 중간 일치, 후방 일치 이렇게 3가지에 대해 간략하게 아래 표에서 설명하겠습니다.



전방 일치

문자열의 시작이 일치할 경우

WHERE 컬럼명 LIKE ‘패턴%’

중간 일치

문자열에 패턴이 포함된 경우

WHERE 컬럼명 LIKE ‘%패턴%’

후방 일치

문자열의 마지막이 일치

WHERE 컬럼명 LIKE ‘%패턴’

[표 8. 패턴 매칭 방법]

    1. LIKE로 % 검색

위에서 LIKE 사용시 패턴에는 %와 _를 사용할 수 있다고 했습니다. 그렇다면 메타 문자와 동일한 문자를 검색할 경우는 어떻게 해야할까요?

이러한 문제를 ‘이스케이프'라는 방법으로 처리할 수 있습니다. LIKE로 %를 검색하는 경우 ‘\%’와 같이 \를 % 앞에 붙이면 됩니다. 이것을 조건식으로 표현하면 다음과 같습니다.


“WHERE 컬럼명 LIKE ‘%\%%’ ”


%가 연속으로 나열되어 있어 보기 힘들수도 있지만 순서를 따라 확인하면 쉽게 이해할 수 있습니다. 예를 들지 않은 _도 %와 동일하게 검색하면 됩니다.

    1. 문자열 상수 ‘ 이스케이프

메타 문자를 검색할 때와 같이 문자열 상수를 검색할 때도 같은 문제가 발생합니다.

문자열 상수는 ‘문자열'과 같이 ‘로 둘러싸 표기합니다. 문자열 상수 안에 ‘를 포함하고 싶을 때는 어떻게 해야 할까요?

표준 SQL에서는 ‘를 2개를 연속해서 기술하는 것으로 이스케이프 처리를 할 수 있습니다. 예를 들어 보겠습니다.

‘It’s’라는 문자열을 문자열 상수로 표기하면 ‘It’’s’로 표기할 수 있습니다.

한가지 더 예를 들면 ‘하나만 문자열 데이터라면 어떻게 해야 할까요? ‘’’’로 쓰면 됩니다. ‘를 총 4번 쓰면됩니다.



저작자 표시 비영리 동일 조건 변경 허락
신고

+ Recent posts

티스토리 툴바