⭐️ LIKE 연산자는 무엇인가 ?
<LIKE>
- 비교하고자 하는 컬럼값이 내가 자세한 특정 패턴에 만족할 경우 조회
[표현법] - 비교할 대상컬럼 LIKE '특정패턴' -> 특정패턴이 일치하는 것만 가져온다.
[예시 코드 ]
SELECT EMP_NAME , SALARY
FROM EMPLOYEE e
WHERE EMP_NAME LIKE '전%';
위의 코드르 보면 LIKE 이후에 '전%' 라고 처음 보게 되는 문장이 있다.
처음보는 '%' 와 '_' 라는 특정 패턴 (와일드 카드) 이 존재한다.
다음은 특정패턴, 즉 와일드 카드에 대하여 알아보자.
⭐️ 특정 패턴 ( 와일드 카드 )
1. '%' : 포함문자 검색 (0글자 이상 전부 조회)
EX) 비교할 대상 컬럼 LIKE '문자%' : 비교할대상 컬럼값 중에서 해당문자로 시작하는 값들을 전부 가져온다.
비교할 대상 컬럼 LIKE '%문자' : 비교할대상 컬럼값 중에서 해당문자로 끝는 값들을 전부 가져온다.
비교할 대상 컬럼 LIKE '%문자%' : 비교할대상 컬럼값 중에서 해당문자가 포함된 값을 전부 가져온다.
2. '_' : 1글자를 대체검색할 때 사용
EX) 비교할 대상 컬럼 LIKE '_문자' : 비교할대상컬럼값 문자앞에 아무글자나 딱 한글자가 있는 값을 조회.
비교할 대상 컬럼 LIKE '문자_' : 비교할대상컬럼값 문자뒤에 아무글자나 딱 한글자가 있는 값을 조회.
비교할 대상 컬럼 LIKE '_문자_' : 비교할대상컬럼값 문자앞에 아무글자나 딱 한글자씩 있는 값을 조회.
비교할 대상 컬럼 LIKE '__문자__' : 내가 원하는 형태로_를 통해서 문자수를 조절할 수 있다.
[예시 코드]
-- 사원들중에 이름 중간에 ''라는 글자가 포함된 사원의 이름, 전화번호 출력
SELECT EMP_NAME , PHONE
FROM EMPLOYEE e
WHERE EMP_NAME LIKE '하__';
LIKE 연산자는 정말 좋은것 같다 👍
하지만 , 특정 문자 기준으로 문자열을 반환하는 SUBSTR도 존재하지만 LIKE 연산자로도 특정 문자 기준으로 문자열을
반환하게 할 수 있다 ‼️
바로 와일드 카드의 옵션인 ESCAPE OPTION 이라는게 존재한다.
다음은 ESCAPE OPTION에 대하여 알아보자.
⭐️ ESCAPE OPTION
현재 이메일 중 _앞글자가 3글자인 사원들의 사번, 이름, 이메일을 조회할 일이 생겼다고 가정하자.
앞서 LIKE 절을 배웠으니 현재 알고 있는 능력으로 코드를 만들어 보자.
[코드]
SELECT EMP_ID, EMP_NAME , EMAIL
FROM EMPLOYEE e
WHERE EMAIL LIKE '____%';
위와 같이 LIKE 연산자에 _ 앞글자가 3글자인 사원을 조회하게 되므로 LIKE '___' 후에 _ 앞글자까지 라고 했으니까 _ 를하나 더 작성해줘야 한다.
하지만 여기에는 문제가 있다 ‼️
위와 같이 분명 LIKE '___' 를 사용하여 앞에 _ 앞 3글자를 출력하게 될줄 알았는데 , 생각과 다르게 _ 앞에 3글자 이상인
사원들이 다 출력되게 된다.
위와 같은 문제를 해결하기 위해 ESCAPE OPTION을 사용해줘야 한다 ‼️
[코드]
SELECT EMP_ID, EMP_NAME , EMAIL
FROM EMPLOYEE e
WHERE EMAIL LIKE '___/_%' ESCAPE '/';
위와 같이 LIKE '___(탈출문자 아무거나)_%' ESCAPE '/' 라고 작성을 하게 되면 위에서 발생한 문제를 해결 할 수 있다.
-> 탈출문자 아무거나 란 , 본인이 설정한 ( @ , / , \ .... ) ESCAPE OPTION을 등록 할 수 있다.
사용 방법
WHERE EMAIL LIKE '___/_%' ESCAPE '/';
-> LIKE ' __ ' 안에 본인이 설정한 ESCAPE OPTION 을 작성해주고 ' ' 가 끝난 후 ESCAPE '설정한 OPTION' 을
작성해주면 된다 ‼️
LIKE 연산자와 ESCAPE OPTION은 자주 사용되고 정말 유용한 옵션이다 👍
'Back End > DataBase' 카테고리의 다른 글
JOIN에 대하여 (4) | 2024.12.18 |
---|---|
WHERE 절과 HAVING 절의 순서에 대하여 (1) | 2024.12.18 |
SQL 구문 순서에 대하여 (0) | 2024.12.18 |
SELECT에 대하여 (0) | 2024.12.17 |
DataBase를 배우며 (2) | 2024.12.17 |