Hey Tech
[SQLite] LIKE: 특정 위치에 문자열을 포함한 데이터만 출력하기! 본문
안녕하세요, 오늘은 LIKE 구문을 활용하여 특정 위치에 문자열을 포함한 데이터만 출력하는 방법에 대해 공유해 드립니다.
오늘도 SQLite를 기반으로 연습용 데이터셋(MLB 선수 정보)를 활용하여 설명해 드립니다.
SQLite 및 연습용 데이터 설치는 아래 포스팅을 참고해 주세요.
heytech.tistory.com/11?category=453619
바로 시작합니다!
LIKE 구문 설명
조건문을 작성할 때 조건식과 완벽하게 일치하지 않더라도 어느정도 유사한 데이터를 출력하고 싶은 경우가 있습니다.
특히 문자열을 활용할 때 이러한 상황이 빈번히 발생하죠. 예를 들어, 특정 문자열을 포함한 데이터를 찾고 싶을 때가 있습니다.
이러한 상황에서 활용할 수 것이 LIKE 구문 입니다.
LIKE 구문은 2가지 와일드 문자(퍼센트(%), 언더바(_)에 따라 쓰임새가 다르기 때문에 와일드 문자에 따라 나누어 설명드리겠습니다.
설명의 편의성을 위해 데이터셋 예시로서
Fruits 테이블이 있고 NAME 칼럼에 "딸기바나나", "딸기", "산딸기" 데이터가 있다고 가정해 보겠습니다.
(1) 퍼센트(%) 활용
퍼센트(%)는 조건식 문자열 앞뒤로 오는 문자열의 글자 수는 고려하지 않습니다.
1) 문자열 앞뒤 %
문자열 앞뒤에 퍼센트(%)를 붙일 경우, 해당 문자열 앞뒤에 어떤 길이의 문자열이 와도 상관없이 출력합니다.
다시 말해, 해당 문자열을 포함하는 데이터를 모두 출력합니다.
-- 데이터 예시: "딸기바나나", "딸기", "산딸기"
SELECT
*
FROM
Fruits
WHERE NAME LIKE "%딸기%"
출력 예시는 다음과 같습니다.
-- 출력예시: "딸기바나나", "딸기", "산딸기"
2) 문자열 앞 %
문자열 앞에만 퍼센트(%)를 붙일 경우,
해당 문자열 앞에 어떤 길이의 문자열이 와도 상관없지만
뒤에 어떠한 문자열이 있으면 출력하지 않습니다.
-- 데이터 예시: "딸기바나나", "딸기", "산딸기"
SELECT
*
FROM
Fruits
WHERE NAME LIKE "%딸기"
출력예시는 다음과 같습니다.
"딸기"는 출력되었지만 "딸기" 단어 뒤에 다른 문자열이 있는 "딸기바나나"는 출력되지 않는 것을 확인할 수 있습니다.
-- 출력예시: "딸기", "산딸기"
3) 문자열 뒤 %
문자열 뒤에만 퍼센트(%)를 붙일 경우,
해당 문자열 뒤에 어떤 길이의 문자열이 와도 상관없지만
앞에 어떠한 문자열이 있으면 출력하지 않습니다.
-- 데이터 예시: "딸기바나나", "딸기", "산딸기"
SELECT
*
FROM
Fruits
WHERE NAME LIKE "딸기%"
출력 예시는 다음과 같습니다.
"딸기"는 출력되었지만 "딸기" 단어 앞에 다른 문자열이 있는 "산딸기"는 출력되지 않는 것을 확인할 수 있습니다.
-- 출력예시: "딸기바나나", "딸기"
(2) 언더바(_) 활용
퍼센트(%)가 조건식 문자열 앞뒤로 오는 문자열의 길이를 고려하지 않았다면
언더바(_)는 조건식 문자열 앞/뒤로 오는 문자열의 한 글자만 고려합니다, 즉 단어의 길이도 고려한 다는 것입니다.
이것이 퍼센트와 언더바의 활용 차이점입니다.
1) 언더바(_) 1개만 사용할 경우
-- 데이터 예시: "딸기바나나", "딸기", "산딸기"
SELECT
*
FROM
Fruits
WHERE NAME LIKE "딸기_"
"딸기" 단어 뒤에 정확히 1글자만 더 있는 데이터가 없기 때문에
"딸기바나나", "딸기", "산딸기" 값 모두 출력되지 않은 것을 확인할 수 있습니다.
-- 출력예시:
2) 문자열 내 특정 위치의 글자 존재 여부 확인
언더바(_)를 이용하면 문자열 내에 특정 위치의 글자가 존재하는 데이터만 선별적으로 출력할 수 있습니다.
예를 들어, 좌측에서 한 글자 뒤에 "기"라는 단어가 포함된 2글자의 단어만 출력해 보겠습니다.
-- 데이터 예시: "딸기바나나", "딸기", "산딸기"
SELECT
*
FROM
Fruits
WHERE NAME LIKE "_기"
출력 예시는 다음과 같습니다.
좌측에서 두 번째 자리에 "기"라는 글자를 포함한 두 글자의 단어만 출력되는 것을 확인할 수 있습니다.
즉, "산딸기"라는 문자열의 두번째 자리에는 "기"라는 단어가 아닌 "딸"이라는 글자가 포함되어 있고 글자수 역시 3글자이기 때문에 출력되지 않습니다. 또한, "딸기바나나" 단어는 좌측에서 두 번째 자리의 글자가 "기"로 일치하지만 글자수가 2글자가 아니기 때문에 출력되지 않는 것을 확인하실 수 있습니다.
-- 출력예시: "딸기"
포스팅에 오류가 있을 경우 댓글 남겨주시면 대단히 감사드리겠습니다.
그럼 오늘도 즐거운 하루 보내시길 바랍니다 :)
고맙습니다.
'AI & 빅데이터 > SQLite' 카테고리의 다른 글
[SQLite] DINTINCT: 중복을 제외한 데이터 찾기! (0) | 2021.02.10 |
---|---|
[SQLite] 서로 다른 칼럼의 데이터 병합하기! (0) | 2021.02.09 |
[SQLite] BETWEEN: 특정 범위에 해당하는 데이터만 출력하기! (0) | 2021.02.06 |
[SQLite] WHERE IN: 여러 조건식을 만족하는 값만 출력하기! (0) | 2021.02.05 |
[SQLite] WHERE: 특정 조건에 해당하는 값만 출력하기! (0) | 2021.02.04 |