[3/4] 학원에서 제공한 실습문제를 내 마음대로 변형해보았다.
만일, 조건식에서 LIKE '__!_' ESCAPE '!' 이라고 기술한다면, 절대로 조회가 안된다.
위의 경우를 해석하자면, 세번째 글자가 _로 끝나는 이메일을 뜻하는데,
내가 가지고 있는 데이터 값에는 _로 끝나는 이메일은 존재하지 않고, _뒤에 다른 글자도 오기 때문이다.
( ha_ 로 끝나는 이메일은 없고 , ha_iy <이런식으로 _ 뒤에 다른 글자도 있다)
따라서 % ( == 와일드카드) 을 활용해야만 정확한 값을 검색할 수 있다.
LIKE '__!_%' ESCAPE '!' 가 올바르게 기술된 코드이다.
<복습>
% : 0글자 이상
문자 % - 특정 패턴에 '%' , '_' 를 와일드 카드로 사용할 수 있음
EX) 비교대상컬럼명 LIKE '문자 % ' => 컬럼값 중에 '문자'로 "시작"되는 걸 조회
비교대상컬럼명 LIKE '%문자' => 컬럼값 중에 '문자'로 "끝"나는 걸 조회
비교대상컬럼명 LIKE '%문자%' => 컬럼값 중에 '문자'가 "포함"되는 걸 조회
EMAIL LIKE '%ha%
위의 코드도 동일한 결과값을 출력한다.
<실패>
1) EMAIL LIKE '__!%_%' ESCAPE '!' ;
2) EMAIL LIKE '__!%_' ESCAPE '!' ;
위의 경우 결과값이 출력되지 않음.
<문제>
급여가 200만원 이상이고, BONUS가 존재하고 여자이면서 이메일 주소에 _문구 앞에 2글자가 존재하는 사원의 EMP_NAME, EMP_NO,EMAIL, 연봉(별칭부여 + 원까지 제시하기) 조회하기
<코드>
SELECT EMP_NAME, EMP_NO,EMAIL, SALARY*12 || '원' "연봉"
FROM EMPLOYEE
1) _ 와일드카드를 사용하는 경우
WHERE SALARY >= 2000000 AND BONUS IS NOT NULL AND SUBSTR(EMP_NO,8,1) = '2' AND EMAIL LIKE '__!_%' ESCAPE '!' ;
2) % 와일드카드를 사용하는 경우
WHERE SALARY >= 2000000 AND BONUS IS NOT NULL AND SUBSTR(EMP_NO,8,1) = '2' AND EMAIL LIKE '%ha%';
<결과값>
'🚨 Error > ORACLE' 카테고리의 다른 글
[Oracle] 비등가 조인을 활용하여 문제 풀기 (0) | 2021.03.12 |
---|---|
[Oracle] 두 개이상의 테이블을 외부조인 하는 방법 (0) | 2021.03.12 |
[Oracle] 같은 문제에 DECODE 와 CASE WHEN THEN 적용해보기 (0) | 2021.03.09 |
[Oracle] 데이터 테이블에서 이메일 전체 조회가 아닌 아이디만 조회하고 싶을 때 (0) | 2021.03.07 |
[Oracle] 보너스 포함 연봉 칼럼에 '원'이라는 리터럴 값 제시 (0) | 2021.03.04 |
댓글