ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 3-2 WHERE절을 이용한 조건검색
    Oracle DB 2016. 5. 3. 17:39

     - LIKE 연산자와 와일드카드

    LIKE 연산자는 칼럼에 저장된 문자 상수 중에서 LIKE 연산자에서 지정한 문자 패턴과 부분적으로 일치하면 참이 되는 연산자이다.

    LIKE 연산자는 pattern을 기술한다.

    pattern에는 두가지 와일드 카드가 사용된다.

     

    와일드카드 

    의미 

    문자가 없거나 하나 이상의 문자가 와도 상관 X 

    하나의 문자로 어떤 값이 와도 상관 X 

     

    예를 들어 설명해보면

    V로 시작하는 이름을 가진 사람을 검색해보자.

     

     

    WHERE 절에서 'V%' 는 first_name 컬럼의 데이터들 중 V로 시작하지만 뒤의 길이는 몇개가 와도 상관이 없다는 의미다.

    만약 V, Vi, Via, Viee 등의 길이가 다른 데이터가 있더라도 V로 시작하기만 하면 되기 때문에 아무 상관이 없다.

    %는 0~n개 길이가 와도 상관이 없는 것이다. 하지만 _ 는 무조건 1개 여야한다.

     

     

    T% 와 T_를 비교하면 T%는 길이가 같지 않더라도 T로만 시작하면 됐지만 T_는 T로 시작하면서 뒤에 _에 해당하는 한글자만 있는 데이터 이어야 한다.

    LIKE 앞에는 NOT을 붙여 NOT LIKE로 쓸 수 있는데 이것은 속하지 않은 사람을 찾을 때 사용하면 된다.

    하지만 _ 나 % 가 들어간 데이터를 검색할 때 어떻게 해야 할까?

     

     

    일단 우리가 배운대로 _REP를 기준으로 찾아보자.

     

     

    하지만 _는 와일드카드로 인식되기 때문에 REP 앞에 한글자만 있는 데이터를 검색하게 된다.

    %를 붙인다면 아래처럼 나온다.

     

    위 결과는 우리가 원하는 결과지만 %, _ 모두 와일드카드로 검색된 것으로써 %의 영향 때문에 _ 는 의미가 없고 우리가 찾으려는 문자열 '_REP' 패턴을 기준으로 한것도 아니다.

    이때 ESCAPE를 사용하면 된다.

    ESCAPE를 사용하여 LIKE문 안에 들어간 '%/_REP'에서 ESCAPE '/'를 선언해 / 뒤에 있는 와일드 카드는 무력화 시키는 것이다.

    따라서 '%/_REP'는 문자열 패턴 '_REP' 가 포함된 문자열을 찾는 것으로 _의 와일드 카드 의미가 아닌 문자열 _로 표현된다.

     

    - NULL 연산자.

    NULL은 데이터에 아무 값도 들어있지 않는 것을 의미한다. 공백과 0은 모두 데이터로 취급한다.

    하지만 NULL은 = 기호로 찾을 수 없다. NULL은 구체적이지 않기 때문에 = 를 이용해 비교할 수 없기 때문이다.

    따라서 다른 기호를 사용한다.

     

    = 부호가 아닌 IS NULL 키워드를 이용해 NULL 값을 검색한다.

    또한 NULL이 아닌 것을 찾는 것으로 IS NOT NULL을 사용할 수 있다.

     

    - 정렬을 위한 OREDER BY

    정렬은 내림차순과 오름차순 두가지가 있다. 오름차순은 ASC, 내림차순은 DESC 키워드를 사용한다. Default는 ASC 정렬 이다.

     

    그냥 출력을 하면 위와 같이 정렬되지 않은 값들이 출력이 된다. ORDER BY를 이용해 정렬을 해보자.

     

     

    ASC를 이용해 오름차순으로 정렬을 한 것을 알 수 있다.

     

     

    또한 이것은 Default로 ASC가 적용된 것을 보여주는 예이다.

     

    다음은 정렬이 두군데에 적용된 것을 보여주는 예시이다.

     먼저 정렬되지 않은 결과 값을 출력해보면 아래와 같다.

     

    이번에는 내림차순 DESC를 사용해 정렬해보자.

    위 결과는 두가지 정렬 조건을 준 것으로 먼저 department_id를 내림차순으로 정렬했다.  department_id가 정렬된 상태에서 salary 값을 Default인 오름차순으로 정렬한 것이다.

    'Oracle DB' 카테고리의 다른 글

    3-1. WHERE절을 이용한 조건 검색  (0) 2016.05.03
    2. SELECT문  (0) 2016.05.03
    1. Oracle DB 시작  (0) 2016.05.02

    댓글

Designed by Tistory.