조건 조합하기

 

1. AND로 조합하기

a열과 b열이 모두 0이 아닌 행을 검색하였다

2개의 조건식(a<>0과 b<>0)을 AND로 연결하였음

 

=> AND로 조건식을 연결하면 모든 조건을 만족하는 행을 검색할 수 있다(AND는 교집합)

 

 

2. OR로 조합하기

a가 0이 아니거나 b가 0이 아닌 행을 검색하였다

 

=> OR로 조건식을 연결하면 어느 쪽이든 조건을 만족하는 행을 모두 검색할 수 있다.(OR은 합집합)

 

3. AND와 OR를 사용할 경우 주의할 점

 

a<>0 AND b<>0 이라는 조건식을 a=1 OR a=2 AND b=1 OR b=2 로 변경한 결과이다.

 

a와 b의 값이 0~2 사이의 값이므로

이렇게 쿼리문을 작성해도 같은 결과가 나오길 기대했지만 다른 결과가 나오게 된다.

그 이유는 AND 연산자가 OR 연산자보다 우선순위가 높기 때문이다

 

즉, a =1 OR (a=2 AND b=1) OR b=2 같이 3개의 조건식이 연결된 것처럼 되어버린다.

 

일반적으로 OR 조건식은 괄호로 묶어 지정하는 경우가 많다. OR을 사용할 때는 괄호로 묶는 습관을 들이자.

 

=> AND는 OR에 비해 우선순위가 높다

 

4. NOT으로 조합

a열이 0이 아니거나 b열이 0이 아닌 행을 제외한 나머지 행을 검색하였다

 

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

주로 ~아닌, ~외에, ~를 제외한 나머지 등의 조건을 지정할 경우 사용한다.

 

 

 

패턴 매칭에 의한 검색

특정 문자나 문자열이 포함되어 있는지를 검색할 때 패턴 매칭을 사용한다.

 

1. LIKE로 패턴 매칭하기

 

열명 LIKE '패턴' 과 같은 식으로 사용한다.

패턴을 정의할 때는 %와 _ 같은 메타문자를 사용할 수 있다.

 

 

 

SQL%는 전방일치 : text의 값이 SQL로 '시작'하는 행을 가져왔다. 

%SQL%는 중간 일치 : text의 값이 SQL이란 단어를 '포함'하는 행을 가져왔다. SQL앞에 빈 문자열이 있어도 가져왔다.

 

나오지는 않았지만 %SQL은 후방 일치. SQL 앞쪽에 임의의 문자열(빈 문자열도 가능)이 존재.

 

=> %는 임의의 문자열과 매치하며, 빈 문자열에도 매치한다

 

 

2. LIKE로 %를 검색하기

메타문자를 검색할 때는 이스케이프 문자(\)를 앞에 붙인다.

 

3. 문자열 상수 '의 이스케이프

 

'을 문자열 상수 안에 포함할 경우는 '를 2개 연속해서 기술한다

 

ex) It's -> 'It''s'

' -> ''''

 

 

 

 

 

 

간단한 패턴매칭이라면 LIKE에 의한 패턴 매칭을 사용하는게 좋지만

 

더 복잡한 패턴을 매칭하는 경우는 정규표현식을 사용하는 편이 낫다고 한다

+ Recent posts