[Oracle] WHERE절에서 와일드카드 기술하기

    [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%';

     

    <결과값>

     

     

     

    728x90

    댓글