LIKE (문자열 비교)
컬럼명 LIKE
특정 문자나, 특정 문자를 포함하고 있는 값을 찾을 때 사용한다.
와일드카드를 사용해서 유연하게 이용할 수 있다.
LIKE 와일드카드 문자 | |
% | 0개 이상의 문자열과 대치 |
_ | 1개의 문자열과 대치 |
NOT LIKE
아닌것을 찾을 때는 NOT LIKE 를 사용한다.
WHERE NOT 컬럼명 LIKE 조건
WHERE 컬럼명 NOT LIKE 조건
둘다 가능하다.
SELECT * FROM STUDENT WHERE NAME NOT LIKE '김%';
SELECT * FROM STUDENT WHERE NOT NAME LIKE '김%';
김씨가 아닌 사람의 모든 컬럼 정보를 가져온다.
와일드카드 문자 %
%가 들어간 위치에는 문자가 없어도 되고, 여러문자가 와도 된다. ( 0개 이상의 문자열)
MAME LIKE '홍길동' : NAME 칼럼에 있는 데이터 중에 홍길동과 일치하는 데이터
NAME LIKE '홍%' : 홍으로 시작하는 데이터
NAME LIKE '%홍' : 홍으로 끝나는 데이터
NAME LIKE '%홍%' : 홍을 포함하는 데이터 (홍 앞뒤에 데이터가 꼭 있어야 하는 것은 아니다.)
SELECT * FROM STUDENT WHERE NAME LIKE '홍%';
홍으로 시작하는 이름을 가진 데이터의 모든 컬럼 정보를 가져온다.
와일드카드 문자 _
_ 는 하나의 문자만 의미한다. 정확히 문자의 개수를 알고 있을 때 사용한다.
SELECT * FROM STUDENT WHERE SNAME LIKE '홍__';
_를 두번 포함했기 때문에 홍으로 시작하는 세글자의 이름만 조회할 수 있다.
홍_ 라고 했을 경우는 홍으로 시작하는 외자 이름만 조회된다.
이것을 모두 포함하고 싶으면 %를 이용하면 된다.
IN
특정값 여러개를 선택하는 SQL 연산자로 여러 조건중에 하나라도 만족하면 결과로 나타내고 싶을 때는 IN을 사용한다
SELECT * FROM 테이블명
WHERE 컬럼명 IN (값1, 값2, ...);
select * from note where EX in('ABC','DEF');
LIKE 와 = 비교
=는 숫자와 문자열에서 작동하는 비교 연산자, LIKE는 문자를 비교하는 문자열 연산자이다.
문자열을 비교할 때의 차이점은 =는 전체 문자열을 비교하고, LIKE는 문자별로 비교한다는 것이다.
또한 LIKE는 와일드카드가 허용되어 보다 유연하게 사용할 수 있다.
사용했을 때 결과적으로 차이가 나는 경우도 있다.
SELECT * FROM NOTE WHERE EX='ABC'; --ABC데이터 출력O
SELECT * FROM NOTE WHERE EX like 'ABC'; --ABC데이터 출력X
SELECT DECODE(EX,'ABC','TRUE','FALSE') FROM NOTE; --FALSE
CHAR(5) 타입 컬럼 EX를 생성했다. 5BYTE 공간에 3BYTE의 ABC 세글자만 입력해두었다.
나머지 2BYTE는 공백으로 채워지기 때문에 정확히 EX 컬럼에 있는 데이터는 'ABC '이다.
비교연산자 = , LIKE를 사용해서 'ABC'로 비교했다.
=으로 비교했을 때는 TRUE로 데이터 출력이 되었다. ABC 뒤에 저장된 공백을 무시한 것이다.
LIKE로 비교했을 때는 FALSE로 데이터가 출력되지 않았다. 공백을 포함한 것과 아닌 것을 구분한 것이다.
DECODE도 LIKE와 같은 결과를 나타냈다.
= 연산자는 후행 공백을 무시하지만 LIKE는 후행 공백을 무시하지 않는다는 차이점이 있다.
'DBMS > Oracle' 카테고리의 다른 글
정렬 ORDER BY / 순번 ROWNUM (1) | 2022.05.20 |
---|---|
그룹화(GROUP BY) , 그룹 함수(SUM, AVG, MAX, MIN, COUNT, STDDEV, VARIANCE) (2) | 2022.05.20 |
CHAR, VARCHAR, VARCHAR2 비교 (0) | 2022.05.20 |
테이블스페이스 (TABLESPACE) - 생성, 다중생성, 수정, 삭제, 조회 (0) | 2022.05.19 |
SQL - DDL(create,drop,alter), DML(insert,delete,select,update), DCL(grant,revoke),TCL(commit,rollback,savepoint) (1) | 2022.05.17 |