Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 어노테이션
- 의존주입
- produces
- SpringBoot
- PointCut
- springjdbc
- 바인딩변수
- 유효성검사
- 서비스레이어
- AOP
- Java
- c:if
- after-throwing
- 스프링
- @
- @ResponseBody
- .xml
- Model
- 생성자주입
- springmvc
- application.properties
- @Valid
- frontController
- 비즈니스레이어
- gradle
- MVC
- jointpoint
- @RequestMapping
- @RequestParam
- spring
Archives
- Today
- Total
메모장
03-4 와일드카드로 문자열 검색하기 본문
728x90
반응형
자신이 검색할 대상을 몰라서 일부만 검색하기도 한다. 그럴때 사용하는 것이 LIKE이다 . LIKE 를 사용하면 와일드 카드로 지정한 패턴과 일치하는 문자열, 날짜 , 시간등을 검색할 수 있다.
- LIKE의 기본 형식
SELECT [열] FROM [테이블] WHERE [열] LIKE [조건값]
1 2
- [열] : 조건을 적용할 열 이름을 입력한다.
- [조건값] : 조건값을 입력한다.
LIKE와 %로 특정 문자열을 포함하는 문자열 검색하기
특정 문자열을 포함하는 문자열을 검색할때는 %를 사용한다. %는 0개 이상의 문자열과 대치한다.
%의 위치에 따라 특정 문자열이 포함된 문자열을 검색할 수 있다.
- %의 사용방법
1. A% : A로 시작하는 모든 문자열
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A%'
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'AA%' ---> AA로 시작하는 문자열 검색
2. %A : A로 끝나는 모든 문자열
SELECT * FROM nasdaq_company
WHERE symbol LIKE '%A'
SELECT * FROM nasdaq_company
WHERE symbol LIKE '%AA'
3. %A% : A를 포함하는 모든 문자열
SELECT * FROM nasdaq_company
WHERE symbol LIKE '%A%'
4. 특정 문자열 제외한 데이터 검색하기
SELECT * FROM nasdaq_company
WHERE symbol NOT LIKE 'A%'
5. 특수문자를 포함한 문자열 검색하기
LIKE를 사용해 문자열에 % 가 포함된 데이터를 검색하려면 어떻게 해야할까 ? %는 예약어 이므로 '%'와 같이
입력하는 방법으로는 검색할 수 없다. 그런경우에는 ESCAPE를 사용한다.
- %를 포함한 임시테이블 생성
WITH CTE (col_1) AS (
SELECT 'A%BC' UNION ALL
SELECT 'A_BC' UNION ALL
SELECT 'ABC'
)
SELECT * FROM CTE
------------------------------ 이제 이 임시 테이블에서 A%BC만 검색해보자
% 기호는 검색 할 수 있는 값이 아닌, 0개 이상의 문자를 의미하는 예약어 이기 때문에 ESCAPE를 이용
- ESCAPE 와 # 사용
WITH CTE (col_1) AS (
SELECT 'A%BC' UNION ALL
SELECT 'A_BC' UNION ALL
SELECT 'ABC'
)
SELECT * FROM CTE
WHERE col_1 LIKE '%#%%' ESCAPE '#'
-> ESCAPE 문이 쿼리를 실행 할 때 #을 제거해 쿼리 명령 단계에서는 '%#%%'이 호출되고 실제
실행할 때는 '%%%'로 해석되어 , %를 포함하는 앞뒤 어떠한 문자가 와도 상관없는 데이터가 검색되는 것이다
ESCAPE에 사용할 문자는 # 외에 &,!,/ 등 다른것도 사용할 수 있다. 다만 !! 해당 문자가 실제 문자열에
쓰이지 않는 것 이어야 한다. 그래야 의도하지 않은 데이터 오류를 방지 할 수 있다 .
▶ 명령어가 SQL로 전달 될때
SELECT * FROM CTE
WHERE col_1 LIKE '%#%%' ESCAPE '#'
▶ 데이터베이스 엔진이 SQL 명령을 수행할 때
SELECT * FROM CTE
WHERE col_1 LIKE '%%%' <----- ESCAPE 로 # 가 제거되고 실행
6. _ 로 특정 문자열을 포함하는 특정 길이의 문자열 검색하기
해당 문자열을 포함하는 특정 길이의 문자열을 검색하려면 어떻게 해야 할까 ? 그럴때는 _ 를 사용한다.
_ 의 사용방법
▶ A_: A로 시작하면서 뒤의 글자는 무엇이든 상관 없으며 전체 글자 수는 2개인 문자열
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A_' ---> 문자열의 길이가 2인 symbol 검색
▶ _A: A로 끝나면서 앞의 문자는 무엇이든 상관없으며 전체 글자 수는 2개인 문자열
SELECT * FROM nasdaq_company
WHERE symbol LIKE '_A'
▶ _A_: 세글자 중 가운데 글자만 A 이며 앞뒤로는 무엇이든 상관없는 문자열
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A__C' ---> 문자열의 길이가 4인 symbol 검색(A로 시작하고 C로 끝남)
▶ _와 %를 조합해 문자열 검색
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A_C%' --> A_C로 시작하는 symbol검색: 이후 문자열은 무엇이든 가능
SELECT * FROM nasdaq_company
WHERE symbol LIKE '__F%' --> __F로 시작하는 symbol검색: 이후 문자열은 무엇이든 가능
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A%L_' --> A로 시작하는 symbol검색: 마지막 문자열만 L_이면 무엇이든 가능
---> A로 시작하고 , 마지막은 L_이기만 하면 되는 symbol 을 검색
7. [] 로 문자나 문자 범위를 지정해 문자열 검색하기
[] 사용방법
- [A,B,C]% 또는 [A-C]% : 첫 글자가 A또는 B또는 C로 시작하는 모든 문자열 검색
- %[A,B,C] 또는 %[A-C] : 마지막 글자가 A또는 B또는 C로 끝나는 모든 문자열 검색
▶ 첫번째가 A, 2번째문자가 A 또는 B 또는 C인 symbol 을 검색
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A[A, B, C]'
▶ 첫글자가 A 이고 2번째 문자가 A-C 또는 G 또는 M-R인 symbol 검색
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A[A-C, G, M-R]'
8. 문자나 문자 범위를 제외한 문자열 검색하기
▶ 첫 글자가 A이고 2번째 문자 A,B,C가 아닌 symbol 검색
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A[^A, ^B, ^C]'
연속범위를 포함하지 않으려면 !
▶ 첫 글자가 A이고 2번째 문자 A,B,C가 아닌 symbol 검색 : 연속 범위 미포함
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A[^A-C]'
9. 다양한 방법으로 와일드 카드 사용하기
▶ A로 시작하면서 2번째 문자는 C,P를 포함하고 3번째 문자는 T를 포함하지 않으면서 마지막 문자는 W로
끝나는 문자열을 검색
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A[C,P][^T]%W'
▶ 1번째 문자는 A,2번째 문자는 A-C,3번째 문자는 아무거나, 4번째 문자는 0 인 문자열을 검색
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A[A-C]_0%'
728x90
반응형
'DB > [SQL 입문]' 카테고리의 다른 글
| 03-6 테이블 생성하고 데이터 조작하기 (0) | 2024.04.11 |
|---|---|
| 03-5 데이터 그룹화 다루기 (0) | 2024.04.11 |
| 03-3 ORDER BY 문으로 데이터 정렬하기 (0) | 2024.04.11 |
| 03-2 WHERE문으로 조건에 맞는 데이터 검색하기 (0) | 2024.04.11 |
| 03-1 SELECT문으로 데이터 검색하기 (0) | 2024.04.11 |