-
와일드카드 문자를 이용한 필터링Database/SQL 2023. 9. 29. 17:19728x90
10분 SQL 6장
개요
와일드카드는 검색 패턴을 만들어서 데이터를 비교할 수 있게 해주는 기능으로 여러 데이터에서 부분적으로 일치하는 값이 있는지 확인할 때 사용 되는 특수 문자를 말한다.
와일드 카드는 SQL WHERE 절에서 특별한 의미를 가지고 검색 절에서 와일드카드를 사용하려면 반드시 LIKE 연산자를 함께 사용해야 한다. 이 때 LIKE 뒤에 나오는 검색 패턴과 일치하는 데이터를 찾는게 아닌 와일드카드를 사용해 비교한다.
[!info]
검색 패턴은 문자나 와일드카드 또는 이 두 개의 조합으로 구성된 검색 조건을 말한다.[!술어(Predicate)]
'술어’란 연산자가 연산자가 아닌 때를 가르킨다 엄밀히 따지면 LIKE는 술어이지 연산자가 아니다.
LIKE 연산자 사용하기
- 가장 자주 사용하는 와일드카드는
%
기호로 검색할 문자열에서%
는 임의의 수의 문자를 의미한다. - 와일드카드는 검색 패턴 내 어디에서나 사용할 수 있고 여러 개의 와일드카드를 같이 사용할 수 있다.
- 검색 패턴에 사용되는
%
는 하나 이상의 문자뿐 아니라 0개의 문자를 뜻할 수도 있다.
(검색 패턴이 사용된 위치에서 0개, 1개 또는 그 이상의 문자를 대신할 수 있다.)
[!tip]
DBMS에 따라 혹은 설정에 따라 검색어는 대소문자를 구분하기도 한다.와일드카드는 이메일 주소의 일부를 검색할 때 유용하게 사용할 수 있다.
[!caution]
일부 DBMS는 열을 공배긍로 채운다. 예를 들어 50개의 문자를 넣을 수 있는 열에 17개의 문자열을 저장하면
나머지 열을 채우기 위해 33개의 공백이 추가 될 수 있다.
이런 채우기는 데이터에 영향을 주진 않지만 SQL문에는 영향을 줄 수도 있다._ 와일드카드
- 언더 라인 와일드카드는 여러 문자열을 대신하는
%
와 달리 단 한개의 문자를 대신한다.
와일드카드 사용 팁
SQL 와일드카드는 매우 강력하고 편리하지만 대체로 다른 검색보다 시간이 더 오래걸린다.
다음은 와일드카드를 사용할 때 주의해야 할 몇 가지 규칙이다.- 와일드카드를 남용해서는 안 된다. 다른 검색 연산자를 이용해서 검색이 가능하다면 그것을 이용하자
- 꼭 필요한 경우가 아니라면 검색 패턴 시작에 와일드카드를 사용하지 말자
와일드카드로 시작하는 검색 패턴은 처리가 가장 느리다. - 와일드카드 기호의 위치 선정에 주의하자. 잘못된 곳에 사용한다면 의도와 다른 결과가 검색된다.
사용
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%';
- 가장 자주 사용하는 와일드카드는