[MySQL/DB] 문자열 함수DB2023. 1. 7. 23:06
Table of Contents
728x90
728x90
문자열 함수
함수 | 설명 |
LENGTH | 문자열의 BYTES 길이(한글은 3BYTES 취급) |
CHAR_LENGTH | 문자열의 순수 길이 |
CONCAT | 문자열을 이어서 반환 |
CONCAT_WS | 문자열을 지정한 구분자와 함께 이어서 반환 |
FORMAT(NUM, N) | NUM의 세 자리마다 ','을 추가하고 소수점 N번 째 자리수까지 표시 |
INSTR | 기준 문자에서 해당 문자열을 찾아 시작 위치 반환, 없으면 0을 반환 |
LOCATE (POSITION) |
INSTR과 매개 변수 순서만 반대 해당 문자열을 기준 문자에서 찾아 시작 위치 반환, 없으면 0을 반환 |
LOWER(LCASE) UPPER(UCASE) |
대문자를 소문자로 소문자를 대문자로 |
LPAD / RPAD | 지정한 길이만큼 문자를 늘리고 늘린 공간을 채울 문자열 반환 |
TRIM | LEADING(시작), TRAILING(끝), BOTH(시작과 끝)에 있는 특정 문자 제거 |
LTRIM / RTRIM | 문자열 왼쪽 / 오른쪽 공백 제거, 문자열 내부 공백은 제거하지 않음 |
LEFT / RIGHT | 지정 길이만큼 문자열 왼쪽 / 오른쪽 반환 |
REPEAT | 지정한 길이만큼 문자열 반복 |
REPLACE | 기준 문자열에서 지정한 문자열을 바꿀 문자열로 대체 |
REVERSE | 문자열을 거꾸로 출력 |
SPACE | 공백 추가 |
SUBSTR (MID) |
문자열을 시작 위치부터 길이만큼 잘라 반환 |
STRCMP(A, B) | A가 B보다 크면 1, 같으면 0 , 작으면 -1 반환 |
SELECT LENGTH('오늘의날씨는맑음');
결과 : 24
SELECT CHAR_LENGTH('오늘의날씨는맑음');
결과 : 8
-- CONCAT(str1, str2, str3, .....)
SELECT CONCAT('오늘의', ' 날씨는', ' 맑아유') AS 오늘의날씨;
결과 : 오늘의 날씨는 맑아유
-- CONCAT(구분자, str1, str2, str3, ....)
-- 해당 예시에서 010만 문자로 취급한 이유는 010을 숫자형으로 넣을 때 '10'이 리턴되기 때문
SELECT CONCAT_WS('-', '010', 1234, 5678);
결과 : 010-1234-5678
SELECT FORMAT(1234567890, 1);
SELECT FORMAT(1234567890.123, 1);
결과 : 1,234,567,890.0 / 1,234,567,890.1
-- INSTR(str, 찾을문자열)
SELECT INSTR('오늘의 날씨는 맑음', '날');
결과 : 5
-- LOCATE(찾을문자열, str)
SELECT LOCATE('맑', '오늘의 날씨는 맑음');
-- LOCATE(찾을문자열, str, 찾기 시작할 위치)
-- 10번째 문자부터 '맑'이 있는지 찾으라는 의미. 문자열의 시작지점부터 길이를 계산해 리턴
SELECT LOCATE('맑', '오늘의 날씨는 맑음', 10);
-- POSITION(찾을문자열 IN str)
SELECT POSITION('맑' IN '오늘의 날씨는 맑음');
결과 : 9 / 0 / 9
SELECT LOWER('TODAY IS GooD');
SELECT UPPER('today Is GoOd');
-- SELECT LCASE('TODAY IS GooD');
-- SELECT UCASE('today Is GoOd');
결과 : today is good / TODAY IS GOOD
SELECT LPAD('WEATHER', 5, 'GOOD');
SELECT LPAD('WEATHER', 15, 'GOOD');
결과 : WEATH / GOODGOODWEATHER
SELECT RPAD('WEATHER', 5, 'GOOD');
SELECT RPAD('WEATHER', 15, 'GOOD');
결과 : WEATH / WEATHERGOODGOOD
-- 활용방법
SELECT LPAD('WEATHER', CHAR_LENGTH('WEATHER')+8, 'GOOD');
-- TRIM (LEADING/TRAILING/BOTH A FROM str) : str에서 사용한 속성에 따라 A를 제거
-- 아무 값도 주지않으면 양쪽의 공백만 제거
SELECT TRIM(LEADING '$' FROM '$$$MONEY$$$');
SELECT TRIM(TRAILING '$' FROM '$$$MONEY$$$');
SELECT TRIM(BOTH '$' FROM '$$$MONEY$$$');
SELECT TRIM(' M O N E Y ');
결과 : MONEY$$$ / $$$MONEY / MONEY / M O N E Y
SELECT LTRIM(' D D D D D ');
SELECT RTRIM(' D D D D D ');
결과 : D D D D D / D D D D D
SELECT LEFT('MONEY', 3);
SELECT RIGHT('MONEY', 3);
결과 : MON / NEY
SELECT REPEAT('MONEY', 3);
결과 : MONEYMONEYMONEY
-- REPLACE(str, 바꿀문자열, 바뀔문자열)
SELECT REPLACE('MONEY' , 'EY' , 'DAY');
결과 : MONDAY
SELECT REVERSE('MONEY');
결과 : YENOM
-- SPACE(N) : N칸만큼 공백 추가
SELECT CONCAT_WS('-', '010', SPACE(10), '5678');
결과 : 010- -5678
-- SUBSTR(str, 시작위치, 길이) : 문자열을 시작위치서부터 길이만큼 잘라낸다
SELECT SUBSTR('MONEY', 3, 2);
결과 : NE
-- STRCMP(str1, str2) : 비교 후 str1이 크면 1, 같으면 0, 작으면 -1 반환
SELECT STRCMP('DEF', 'AEG');
SELECT STRCMP('DEF', 'DEF');
SELECT STRCMP('DEF', 'DEG');
결과 : 1, 0, -1
728x90
300x250
@mag1c :: 꾸준히 재밌게
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!