Untitled_Blue

[SQL] 와일드 카드 (Wildcard) 본문

Database/SQL

[SQL] 와일드 카드 (Wildcard)

Untitled_Blue 2023. 5. 23. 23:23
반응형

안녕하세요. 이번 글은 와일드 카드에 대한 설명입니다.

- 와일드 카드란?

와일드 카드 (Wildcard)란 Like 연산자와 같이 사용하며 지정된 문자 패턴과 부분적으로 일치하면 관련된 데이터를 모두 찾아주는 특수문자를 의미한다.

일부 단어만 입력해도 입력값이 포함된 연관 단어가 나오는 장면 (출처 : NAVER)

예를 들어 네이버같은 검색창이나 입력창에서 한글자만 입력하면 그 한 글자가 포함된 단어가 줄줄이 나오는 것을 확인할 수 있는데 이와 같이 관련된 일부 값으로도 관련된 데이터를 찾을 수 있도록 도와주는 특수문자가 와일드 카드라는 점을 이해할 수 있을 것이다.

- 와일드 카드 관련 특수문자

종류 의미
_ 어떤 값이든 _에는 반드시 하나의 문자가 존재해야 된다는 뜻
% %에는 길이와 문자 종류에 관계없이 해당 특수문자 앞에 있는 단어로 시작하는 모든 데이터 조회한다는 뜻 (ex. 홍%)

와일드 카드 문자는 대표적으로 2개가 있으며 이 두 개의 특수문자를 사용자가 적절히 활용하여 원하는 데이터를 조회할 수 있다. 이를 웹사이트에 적용한다면 게시판을 검색할 때 일부만 입력해도 검색한 단어가 포함된 모든 게시물을 조회할 수 있도록 활용할 수 있다. 이를 와일드 카드를 활용한다면 Like '%[검색어]%'라고 확인할 수 있다.

select * from EMP where JOB Like '%A%';

다음 소스코드의 의미는 EMP 테이블에서 모든 컬럼에 대한 행의 데이터를 출력하되, JOB 칼럼 내 데이터 중에서 어느 위치에 있든 상관없이 A라는 단어가 있는 결과만을 출력하라는 뜻이다. 실행 결과 전체 테이블 내 행들 중 JOB에 A가 없는 단어들은 모두 제외되고 포함된 결과만을 확인할 수 있다. 물론 한 글자라도 있으면 전부 출력된다.

여기서 만약 Like 뒤 와일드 카드 특수문자 조건을 'A%'라고 했으면 길이에 상관없이 A로 시작하는 모든 결과를 출력하라는 뜻이며 '%A'라고 하면 길이 역시 상관없이 A로 끝나는 단어를 모두 출력할 것이다. 이를 활용해서 '%A%'라고 조건을 설정했는데 이는 앞뒤의 길이 상관없이 A가 있는 모든 결과를 출력하라는 뜻으로 해석할 수 있음을 확인할 수 있다.

select * from EMP where ENAME Like '_I%';

다음 소스코드의 의미는 EMP 테이블에서 모든 칼럼에 대한 행의 데이터를 출력하되, ENAME 칼럼 내 데이터 중 두 번째 문자가 I이면서 I 뒤에는 길이에 상관없이 I로 시작하는 결과를 출력하라는 뜻이다. 실행 결과 두번째 문자가 I이면서 I로 시작하는 결과를 정상적으로 출력됨을 확인할 수 있다. 이렇게 '_' 는 해당 특수문자가 있는 곳에는 반드시 한 글자가 존재해야 된다는 조건임을 확인할 수 있다. 여기서 '__K' 이런 식으로 '_'(Underbar)를 두 번을 사용하면 최소 K(문자) 앞에는 두 글자가 반드시 존재해야 된다는 점으로 해석할 수 있다.

select * from EMP where MGR Like '___8';

영문자와 한글 외에도 숫자 또한 와일드 카드를 사용할 수 있다는 점을 상단의 코드와 실행 결과를 통해 확인 가능하다.

이렇게 와일드 카드는 실무뿐만 아니라 우리 일상의 인터넷 세상 속에서 매일같이 경험하는 존재이다. 굳이 처음부터 끝까지 작성하지 않고도 본인이 검색할 단어만 입력해도 관련된 모든 것들을 보여주기 때문에 편리함을 경험하게 해준다.

이러한 모든 것들은 SQL 기준으로 와일드 카드(Wildcard), 프로그래밍 언어(PL, Programming Language) 기준으로 String.contain(value)를 통해 작동된다고 봐도 과언이 아니다.

 

다음 글은 문자 함수에 대한 설명입니다.

반응형

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

[SQL] 날짜 함수  (0) 2023.05.26
[SQL] 문자 함수, 숫자 함수  (0) 2023.05.26
[SQL] IS NULL and IS NOT NULL 그리고 NVL and NVL2  (0) 2023.05.23
[SQL] WHERE 절, 연산자의 시작.  (0) 2023.05.17
[SQL] SELECT  (1) 2023.05.16