문자열 함수 : 문자열을 조작
- ASCII(아스키 코드), CHAR(숫자) : 문자의 아스키 코드값을 돌려주거나 숫자의 아스키 코드값에 해당하는 문자를 돌려줌
예) SELECT ASCII('A'), CHAR(65);
*ASCII 코드 65 = A , 97=a
- BIT_LENHTH(문자열), CHAR_LENGTH(문자열), LENGTH(문자열)
할당된 bit 크기 또는 문자 크기를 반환. CHAR_LENGTH()문자의 개수를 반환
LENGTH()는 할당된 Byte 수 반환
예) SELECT BIT_LENGTH('abc'), CHAR_LENGTH('abc'), LENGTH('abc');

SELECT BIT_LENGTH('가나다'), CHAR_LENGTH ('가나다'), LENGTH( '가나다' );

>MySQL은 기본적으로 UTF-8코드를 사용하기 떄문에 영문은 3byte, 한글은 3*3=9byte 할당함
- CONCAT (문자열1, 문자열2 ,,, ), CONCAT_WS(구분자, 문자열1, 문자열2, ... ) : 문자열을 이어줌
CONCAT_WS()는 구분자와 함께 문자열을 이어줌
예) SELECT CONCAT_WS('/', '2025', '01', '01');
-- 결과는 '2025/01/01'
- ELT(위치, 문자열1, 문자열2, ...) , FIELD (찾을 문자열, 문자열1, 문자열2, ...),
FIND_IN_SET(찾을 문자열, 문자열 리스트), INSTR(기준 문자열, 부분 문자열),
LOCATE(부분 문자열, 기준 문자열);
ELT()는 위치 번째에서 해달하는 문자열을 반환
FIELD() 찾을 문자열의 위치를 찾아서 반환
FIND_IN_SET()는 찾을 문자열을 문자열 리스트에서 찾아서 위치를 반환
INSTR()는 기준 문자열에서 부분 문자열을 찾아서 그 시작 위치를 반환
LOCATE()는 INSTR()와 동일하지만 파라미터의 순서가 반대로 되어 있음
예) SELECT ELT (2, '하나' , '둘', '셋'), FIELD ('둘','하나','둘','셋'),
FIND_IN_SET ('둘', '하나,둘,셋') , INSTR ('하나둘셋', '둘'), LOCATE ('둘', '하나둘셋');
>결과는 '둘',2,2,3,3
-FORMAT(숫자, 소수점 자릿수) : 숫자를 소수점 아래 자릿수까지 표현
또한 천 단위마다 콤마(,) 표시
SELECT FORMAT(123456.123456, 4) ;
--결과는 123,456.1235 < 소수점 아래4번째에서 반올림 되어 4는 5로 표현
-BIN (숫자) , HEX (숫자), OCT (숫자) : 2진수, 16진수 , 8진수의 값을 반환
SELECT BIN(31), HEX(31), OCT(31);
--결과는 2진수 11111, 16진수 1F, 8진수 37
- INSERT (기준 문자열, 위치 , 길이 , 삽입할 문자열) : 기준 문자열의 위치부터 길이만큼을 지우고 삼입할 문자열을 끼워 넣음 .
>INSERT(original_string, start_position, length_to_delete, new_string)
SELECT INSERT('abcdefghi' , 3 , 4 , '@@@@'), INSERT('abcdefghi' , 3, 2, '@@@@');

-LEFT (문자열, 길이), RIGHT(문자열, 길이) : 왼쪽 또는 오른쪽에서 문자열의 기이만큼 반환
SELECT LEFT('abcdefghi' , 3) , RIGHT ('abcdefghi' ,3);
-UPPER (문자열), LOWER(문자열) : 소문자를 대문자로, 대문자를 소문자로 변경
SELECT LOWER ('abcdEFH') , UPPER ('abcdEFH') ;
-LPAD (문자열, 길이 , 채울 문자열), RPAD (문자열, 길이 , 채울 문자열) : 문자열을 길이만큼 늘린 후에
빈 곳을 채울 문자열로 채움
SELECT LPAD ('이것이', 5, '##') , RPAD ('이것이', 5, '##') ;
-- 결과는 '##이것이' , '이것이##'
- LTRIM(문자열) , RTRIM (문자열) : 문자열의 왼쪽/오른쪽 공백을 제거 . 중간의 공백은 제거되지 않음
SELECT LTRIM(' 이것이'), RTRIM (' 이것이 ');
-- 결과는 둘다 공백이 제거된 '이것이' 출력
- TRIM(문자열) , TRIM(방향 자를 문자열_FROM 문자열) : TRIM(문자열)은 문자열의 앞뒤 공백을 모두 없앰
TRIM(방향 자를_문자열 FROM 문자열) 에서 방향은 LEADING(앞), BOTH(양쪽), TRAILING(뒤)가 나올 수 있음
SELECT TRIM(' 이것이 ') , TRIM(BOTH 'ㅋ' FROM 'ㅋㅋㅋ재미있어요.ㅋㅋㅋ') ;
- REPEAT (문자열, 횟수) : 문자열을 횟수만큼 반복
SELECT REPEAT ('이것이', 3);
- REPLACE (문자열, 원래 문자열, 바꿀 문자열) : 문자열에서 원래 문자열을 찾아서 바꿀 문자열로 바꿔줌
SELECT REPLACE ('이것이 MySQL이다' , '이것이' , 'This is') ;
--'This is MySQL이다'
-REVERSE(문자열) : 문자열의 순서를 거꾸로 만듦
SELECT REVERSE ('MySQL');
-- 'LQSyM'
-SPACE(길이) : 길이만큼의 공백을 반환
SELECT CONCAT ('이것이' , SPACE(10), 'MySQL이다');
--'이것이 MySQL이다'
- SUBSTRING (문자열, 시작위치, 길이) 또는 SUBSTRING (문자열 FROM 시작위치 FOR 길이) :
시작 위치부터 길이만큼 문자를 반환, 길이가 생략되면 문자열의 끝까지 반환
SELECT SUBSTRING ('대한민국만세' , 3 , 2) ;
--결과는 ''민국
- SUBSTRING_INDEX (문자열, 구분자, 횟수) : 문자열에서 구분자가 왼쪽부터 횟수 번째 나오면 그 이후의
오른쪽은 버림. 횟수가 음수면 오른쪽부터 세고 왼쪽을 버림
SELECT SUBSTRING_INDEX ('cafe.naver.com' , '.' , 2) , SUBSTRING_INDEX ('cafe.naver.com' , '.' , -2);
'MySQL' 카테고리의 다른 글
| MySQL_내장함수_수학함수 (0) | 2024.09.11 |
|---|---|
| MySQL_SQL 실행 단축키 (0) | 2024.09.10 |
| MySQL_내장 함수_제어 흐름 함수 (0) | 2024.09.10 |
| MySQL_변수의 사용 (0) | 2024.09.10 |
| MySQL_MySQL의 데이터 형식(숫자,문자,날짜,기타) (0) | 2024.09.10 |