안녕하세요. 신기한 연구소입니다.
WHERE절에서 다양한 조건이나 필터를 사용할 수 있습니다.
그중 어떤 범위를 정하고 싶을 때 사용할 수 있는 키워드에 대해 살펴보겠습니다.
WHERE절에서 범위를 정하고 싶은 경우 BETWEEN을 사용할 수 있습니다.
BETWEEN A AND B
조건 A 에서 조건 B 사이의 값을 조회합니다.
우선 SAL 정렬로 조건 없이 조회했습니다.
SAL BETWEEN 800 AND 1500
급여가 800에서 1500까지인 사원을 조회합니다.
WHERE SAL >= 800 AND SAL <= 1500와 같은 의미입니다.
숫자 값을 이용해서 조회를 해봤습니다.
범위 사이의 값을 조회하고 싶다면 위 쿼리를 잘 사용하면 되겠네요.
부정형은 BETWEEN 앞이나 뒤에 NOT을 넣으면 됩니다.
그럼 해당 범위 외의 값을 조회합니다.
WHERE SAL < 800 OR SAL > 1500와 같은 의미로 이해하면 됩니다.
OR를 사용하는 것보다 NOT BETWEEN 또는 BETWEEN NOT을 이용하는 게
가독성도 좋고 편해 보이네요.
DATE타입도 BETWEEN 조건으로 사용이 가능합니다.
그런데 컬럼 타입이 DATE인데 값은 문자열로 넣었네요.
하지만 조회가 잘 됩니다.
오라클에서 자동으로 형 변환을 해주기 때문에 가능하게 된 겁니다.
문자형에서 날짜형으로 묵시적 형변환을 해줍니다.
이렇게 미리 DATE형으로 형 변환해서 조회해도 같은 결과가 나옵니다.
컬럼 타입이 DATE형이면 명시적으로 쿼리에서 DATE()로 미리 형 변환해서 조회할 수 있습니다.
명시적 형 변환을 권장하니 개발할 때 참고하기 바랍니다.
그럼 이렇게 문자열로 BETWEEN을 사용하면 잘 조회가 될까요?
결과를 확인해 봅니다.
'C'로 시작하는 ‘CLARK’를 포함해서 검색하고 싶은데
‘C’를 두 번째 조건을 넣었음에도 조회가 안 되는 현상이 발생합니다.
그 이유는 ‘C’ 뒤의 글자가 더 존재하며
‘C’만 조건으로 넣으면 딱 한 글자로 C인 데이터까지 조회합니다.
즉 ‘C’ 다음에 어떤 글자가 오면 ‘C’ 한 글자보다 더 큰 값이 되어서 검색이 안되는 겁니다.
‘CLARK’를 검색하기 위해 두번째 검색 문자로 ‘CL’까지 넣어도 조회가 안됩니다.
다음 ‘A’가 있기 때문이죠.
그럼 ‘CLARK’를 검색하기 위해서는 글자를 넘어서는 조건이 필요합니다.
예를 들어 ‘D’로 하던지 ‘CM’으로 하던지 ‘CLB’로 하던지 아니면 ‘CLARK’를 넣으면
조회가 됩니다.
이해가 되었나요?
이제 검색이 잘 됩니다.
문자열 검색에서 BETWEEN을 사용할 때는 이 점을 주의해야 합니다.
간혹 이 부분을 이해하지 못하고 잘못 사용해서 검색이 안되는 경우가 있거든요.
BETWEEN A AND B
BETWEEN A AND B는 정말 자주 사용하는 조건입니다.
간단하게 사용할 수 있으나 제대로 이해하고 사용한다면 더 편리하게 이용할 수 있습니다.
특히 문자열로 조건식을 만드는 경우는 결과를 미리 확인해 보는 것이 중요합니다.
도움이 되길 바라며 다음에 또 만나요.
잘못된 내용이나 수정이 필요하면 댓글 주세요.
아래 하트(공감) 버튼을 눌러서 더 다양한 글을 쓸 수 있게 응원 부탁드립니다. 감사합니다.
'Software > 데이터베이스(SQL)' 카테고리의 다른 글
[HOW]SQL EXISTS와 LIKE 검색 조건 사용하는 방법 (0) | 2020.09.18 |
---|---|
[HOW]SQL 조건 중 IN (A, B, C, ...) 사용하는 방법 (0) | 2020.09.17 |
[HOW]SQL 집합 연산자(SET OPERATOR) 사용하는 방법, UNION, UNION ALL, INTERSECT, MINUS -오라클(ORACLE) (0) | 2020.09.15 |
[HOW]계층형 쿼리 사용하는 방법, START WITH... CONNECT BY ~ ORDER SIBLINGS BY - 오라클(ORACLE) (4) | 2020.09.14 |
[HOW]SQL 외부조인(OUTER JOIN) 사용하는 방법, LEFT/RIGHT/FULL OUTER JOIN, 오라클, 조인 (0) | 2020.09.13 |