ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 와일드카드 문자를 이용한 필터링
    Database/SQL 2023. 9. 29. 17:19
    728x90

    10분 SQL 6장

    1. 개요
    2. LIKE 연산자 사용하기
    3. 와일드카드 사용 팁
    4. 사용

    개요

    와일드카드는 검색 패턴을 만들어서 데이터를 비교할 수 있게 해주는 기능으로 여러 데이터에서 부분적으로 일치하는 값이 있는지 확인할 때 사용 되는 특수 문자를 말한다.

     

    와일드 카드는 SQL WHERE 절에서 특별한 의미를 가지고 검색 절에서 와일드카드를 사용하려면 반드시 LIKE 연산자를 함께 사용해야 한다. 이 때 LIKE 뒤에 나오는 검색 패턴과 일치하는 데이터를 찾는게 아닌 와일드카드를 사용해 비교한다.

    [!info]
    검색 패턴은 문자나 와일드카드 또는 이 두 개의 조합으로 구성된 검색 조건을 말한다.

    [!술어(Predicate)]
    '술어’란 연산자가 연산자가 아닌 때를 가르킨다 엄밀히 따지면 LIKE는 술어이지 연산자가 아니다.


    LIKE 연산자 사용하기

    • 가장 자주 사용하는 와일드카드는 % 기호로 검색할 문자열에서 %는 임의의 수의 문자를 의미한다.
    • 와일드카드는 검색 패턴 내 어디에서나 사용할 수 있고 여러 개의 와일드카드를 같이 사용할 수 있다.
    • 검색 패턴에 사용되는 %는 하나 이상의 문자뿐 아니라 0개의 문자를 뜻할 수도 있다.
      (검색 패턴이 사용된 위치에서 0개, 1개 또는 그 이상의 문자를 대신할 수 있다.)

    [!tip]
    DBMS에 따라 혹은 설정에 따라 검색어는 대소문자를 구분하기도 한다.

    와일드카드는 이메일 주소의 일부를 검색할 때 유용하게 사용할 수 있다.

    [!caution]
    일부 DBMS는 열을 공배긍로 채운다. 예를 들어 50개의 문자를 넣을 수 있는 열에 17개의 문자열을 저장하면
    나머지 열을 채우기 위해 33개의 공백이 추가 될 수 있다.
    이런 채우기는 데이터에 영향을 주진 않지만 SQL문에는 영향을 줄 수도 있다.

    _ 와일드카드

    • 언더 라인 와일드카드는 여러 문자열을 대신하는 %와 달리 단 한개의 문자를 대신한다.

    와일드카드 사용 팁

    SQL 와일드카드는 매우 강력하고 편리하지만 대체로 다른 검색보다 시간이 더 오래걸린다.
    다음은 와일드카드를 사용할 때 주의해야 할 몇 가지 규칙이다.

    1. 와일드카드를 남용해서는 안 된다. 다른 검색 연산자를 이용해서 검색이 가능하다면 그것을 이용하자
    2. 꼭 필요한 경우가 아니라면 검색 패턴 시작에 와일드카드를 사용하지 말자
      와일드카드로 시작하는 검색 패턴은 처리가 가장 느리다.
    3. 와일드카드 기호의 위치 선정에 주의하자. 잘못된 곳에 사용한다면 의도와 다른 결과가 검색된다.

    사용

    SELECT prod_id, prod_name 
    FROM Products 
    WHERE prod_name lIKE 'Fish%';  
    
    SELECT prod_id, prod_name 
    FROM Products 
    WHERE prod_name LIKE '%bean bag%';  
    
    SELECT prod_name 
    FROM Products 
    WHERE prod_name LIKE 'F%y';  
    
    SELECT prod_id, prod_name 
    FROM Products 
    WHERE prod_name LIKE '__ inch teddy bear';  
    
    SELECT prod_id, prod_name 
    FROM Products 
    WHERE prod_name LIKE '% inch teddy bear';  
    
    SELECT cust_contact 
    FROM Customers 
    WHERE cust_contact LIKE '[JM]%' 
    
    //MS SQL 전용 문법 ORDER BY cust_contact;  
    #######  
    SELECT prod_name, prod_desc 
    FROM Products 
    WHERE prod_desc LIKE '%toy%';  
    
    SELECT prod_name, prod_desc 
    FROM Products 
    WHERE prod_desc NOT LIKE '%toy%';  
    
    SELECT prod_name, prod_desc 
    FROM Products 
    WHERE prod_desc LIKE '%toy%' AND prod_desc LIKE '%carrots%';  
    
    SELECT prod_name, prod_desc 
    FROM Products 
    WHERE prod_desc LIKE '%toy%carrots%';

     


    'Database > SQL' 카테고리의 다른 글

    데이터 요약  (0) 2023.09.29
    데이터 조작 함수 사용하기  (0) 2023.09.29
    서브쿼리 사용하기  (0) 2023.09.29
    쿼리 결합하기  (0) 2023.09.29
    테이블 조인  (0) 2023.09.29
Designed by Tistory.