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
- pmf
- 바로팜
- CAC
- model_selection
- aarrr
- 역설구조
- 코호트
- retention
- 비즈니스모델
- allra
- 인게이지먼트
- 팔방이익구조
- 퍼널분석
- sklearn
- 데이터분석
- activation
- 리텐션
- 머신러닝
- 핀테크
- 그로스해킹
- 한장으로끝내는비즈니스모델100
- fundbox
- 활성화
- 셀프스토리지
- 올라
- 서말리포켓
- BM분석
- 전환율
- mysql설치 #mysql #mysqluser #mysqlworkbench
- 선정산서비스
Archives
- Today
- Total
데이터로그😎
[SQL기본] 문자열 관련 함수 본문
1. 문자열 추출/슬라이스
함수명 | 설명 | 예시 | 결과 |
SUBSTRING(str, pos, len) | 지정 위치부터 문자열 추출 | SUBSTRING('abcdef', 2, 3) | 'bcd' |
SUBSTR(str, pos, len) | SUBSTRING과 동일 | SUBSTR('abcdef', 2, 3) | 'bcd' |
LEFT(str, len) | 왼쪽에서 N글자 추출 | LEFT('abcdef', 3) | 'abc' |
RIGHT(str, len) | 오른쪽에서 N글자 추출 | RIGHT('abcdef', 2) | 'ef' |
SUBSTRING_INDEX(str, delim, count) | 구분자로 나눈 후 일부 추출 (왼쪽부터 count, 음수면 오른쪽부터) | SUBSTRING_INDEX('gigi@naver.com', '@', 1) | 'gigi' |
1.1. SUBSTR: 문자 추출 (=SUBSTRING)
- 문자열에서 "a번째 자리" 부터 b개의 문자를 추출하고 싶을 때
1.2. SUBSTRING_INDEX(str, delim, count): 구분자로 나눈 후 일부만 추출
# 오른쪽 1번째 @까지 문자 추출
SELECT SUBSTRING_INDEX('gigi@naver.com', '@', -1)
--> 결과: naver.com
# 왼쪽 1번째 @까지 문자 추출
SELECT SUBSTRING_INDEX('gigi@naver.com', '@', 1);
--> 결과: gigi
2. 문자열 검색/ 위치 찾기
함수명 | 설명 | 예시 | 결과 |
LOCATE(substr, str) | 부분 문자열의 위치 반환 (1부터 시작) | LOCATE('cd', 'abcdef') | 3 |
INSTR(str, substr) | LOCATE와 동일, 순서만 반대 | INSTR('abcdef', 'cd') | 3 |
POSITION(substr IN str) | 동일 | POSITION('cd' IN 'abcdef') | 3 |
2.1. LOCATE() / INSTR() : 특정 부분 문자열이 '어디서 시작하는지 위치(인덱스)' 반환
SELECT LOCATE('cd', 'abcdef'); -- 결과: 3
SELECT INSTR('abcdef', 'cd'); -- 결과: 3
3. 문자열 치환/ 결합
함수명 | 설명 | 예시 | 결과 |
CONCAT(str1, str2, ...) | 문자열 연결 | CONCAT('a','b') | 'ab' |
REPLACE(str, from_str, to_str) | 문자열 치환 | REPLACE('abcabc','a','x') | 'xbcxbc' |
CONCAT_WS(delim, str1, str2, ...) | 구분자를 포함한 연결 | CONCAT_WS('-', '2023','06','01') | '2023-06-01' |
3.1. CONCAT(): 문자 합치기
SELECT CONCAT('Hello', ' ', 'World'); -- 결과: 'Hello World'
3.2. Replace: 문자 대체 (공백 제거에도 사용)
- 문자 혹은 숫자를 다른 문자로 대체하고 싶을 때 사용
- 문자, 숫자 모두 가능
- 예시: IndepYear라는 컬럼에서 19라는 숫자를 ** 으로 대체해주세요.
3.2.1. REPLACE + SUBSTR : 특정 문자를 대체하고 싶을 때
- a번째 자리에서부터 b개의 글자를 특정 문자로 치환하고 싶을 때
4. 문자열 길이/ 정보
함수명 | 설명 | 예시 | 결과 |
LENGTH(str) | 바이트 수 반환 (한글: 3byte) | LENGTH('abc') | 3 |
CHAR_LENGTH(str) / CHARACTER_LENGTH(str) |
문자 수 반환 (한글도 1로 계산) | CHAR_LENGTH('가나다') | 3 |
5. 대소문자 변환
5.1. LOWER(), UPPER() : 소문자/대문자 변환
SELECT LOWER('ABC'); -- 결과: 'abc'
SELECT UPPER('abc'); -- 결과: 'ABC'
6. 공백/문자 제거
함수명 | 설명 | 예시 | 결과 |
TRIM(str) | 양쪽 공백 제거 | TRIM(' abc ') | 'abc' |
LTRIM(str) | 왼쪽 공백 제거 | LTRIM(' abc') | 'abc' |
RTRIM(str) | 오른쪽 공백 제거 | RTRIM('abc ') | 'abc' |
TRIM, LTRIM, RTRIM: 공백 제거
- 공백 제거위해 사용 (문자 사이에 있는 공백은 제거하지 못하고, 왼쪽/오른쪽 끝에 있는 공백만 제거)
- 공백을 눈으로 확인하기 위해 _(언더바)로 replace했다.
- LTRIM을 사용했을 때 좌측 공백이 사라진 것을 볼 수 있다.
7. 기타 (LPAD, RPAD)
LPAD(문자열, 원하는 총 문자 길이, 채울 문자)
- 원하는 글자 수 만큼 특정 문자로 자릿수를 채우고 싶을 때
'# 1. 언어 > # 1.1. SQL' 카테고리의 다른 글
[SQL기본] 윈도우 함수: RANK() OVER() (0) | 2023.11.24 |
---|---|
[SQL기본] GROUP BY, GROUPING (0) | 2023.09.08 |
[SQL기본] NULL vs 공백 / NULL 대체 (0) | 2023.09.08 |
[SQL기본] 윈도우 함수 (0) | 2023.09.06 |
서브 쿼리 (0) | 2023.09.06 |