문자열 함수는 데이터베이스 내의 문자열을 다루는 함수들로, 문자열의 길이 확인, 조합, 치환, 특정 위치의 문자 추출 등 다양한 처리를 제공합니다. 아래는 자주 사용되는 함수와 예제 코드입니다.
ASCII 코드 값 확인: 특정 문자에 대한 ASCII 값을 반환합니다.
SELECT ASCII('A'), ASCII('a');
문자열 길이 확인:
LENGTH()
SELECT LENGTH('abc');
CHAR_LENGTH()
SELECT CHAR_LENGTH('테스트');
예제: 부서번호가 10번인 사원의 이름과 이름 길이 출력
SELECT ename, CHAR_LENGTH(ename) FROM emp WHERE deptno = 10;
'ename'
에 따옴표를 붙이면 문자열 "ename"
의 길이(5)가 출력됩니다.CONCAT(): 여러 문자열을 하나로 합칠 수 있습니다.
SELECT CONCAT('java', 'spring');
테이블의 열 데이터를 합칠 때도 사용 가능:
SELECT CONCAT(ename, job) FROM emp WHERE deptno = 20;
예제: 사원의 이름과 담당 업무를 문장으로 표현
SELECT CONCAT(ename, '님의 담당업무는 ', job, '입니다') FROM emp WHERE deptno = 20;
결과 예시:
| SMITH님의 담당업무는CLERK입니다 |
| JONES님의 담당업무는MANAGER입니다 |
복합 예제: 사원번호, 이름, 입사일을 포함한 문장
SELECT CONCAT(empno, ' 사원번호인 사원 ', ename, '의 입사일은 ', DATE_FORMAT(hiredate, '%Y년 %m월 %일'), '이다') FROM emp WHERE deptno = 30;
INSTR(): 특정 문자열 내에 다른 문자열이 처음 등장하는 위치를 반환, 없을 경우 0 반환.
SELECT INSTR('mariadb database study', 'fa');
LEFT, RIGHT, SUBSTRING(): 문자열에서 원하는 부분을 추출
LEFT()
SELECT LEFT('mariadb database study', 5);
RIGHT()
SELECT RIGHT('mariadb database study', 5);
SUBSTRING()
SELECT SUBSTRING('mariadb database study', 5, 5);
예제: 이름이 's'로 시작하는 사원 정보 출력
LEFT()
사용:SELECT empno, ename, sal FROM emp WHERE LEFT(ename, 1) = 's';
INSTR()
사용:SELECT empno, ename, sal FROM emp WHERE INSTR(ename, 's') = 1;
SELECT REPLACE('mariadb database study', 'study', '스터디');
SELECT INSERT('mariadb database study', 9, 8, '데이터베이스');
대소문자 변환:
LOWER()
SELECT LOWER('ABC');
UPPER()
SELECT UPPER('abc');
문자열 뒤집기:
SELECT REVERSE('ABC');
공백 제거:
LTRIM()
SELECT LTRIM(' mariadb ');
RTRIM()
SELECT RTRIM(' mariadb ');
TRIM()
SELECT TRIM(' mariadb ');
자리 맞추기 (특정 문자를 채워 길이 맞추기):
LPAD()
SELECT LPAD('hi', 4, '?'); -- 결과: ??hi
RPAD()
SELECT RPAD('hi', 4, '?'); -- 결과: hi??
함수 | 설명 | 예시 | 결과 |
---|---|---|---|
CONCAT() | 두 개 이상의 문자열을 결합 | SELECT CONCAT('Hello', ' ', 'World'); | 'Hello World' |
LENGTH() | 문자열의 길이를 반환 | SELECT LENGTH('MariaDB'); | 7 |
LOWER() | 문자열을 소문자로 변환 | SELECT LOWER('HELLO'); | 'hello' |
UPPER() | 문자열을 대문자로 변환 | SELECT UPPER('hello'); | 'HELLO' |
SUBSTRING() | 문자열의 일부를 추출 | SELECT SUBSTRING('MariaDB', 2, 3); | 'ari' |
TRIM() | 문자열의 앞뒤 공백을 제거 | SELECT TRIM(' MariaDB '); | 'MariaDB' |
LTRIM() | 문자열의 왼쪽 공백을 제거 | SELECT LTRIM(' MariaDB'); | 'MariaDB' |
RTRIM() | 문자열의 오른쪽 공백을 제거 | SELECT RTRIM('MariaDB '); | 'MariaDB' |
REPLACE() | 특정 문자열을 다른 문자열로 치환 | SELECT REPLACE('Hello World', 'World', 'MariaDB'); | 'Hello MariaDB' |
INSTR() | 특정 문자열이 다른 문자열 내에 처음 등장하는 위치 | SELECT INSTR('Hello World', 'World'); | 7 |
LEFT() | 문자열의 왼쪽에서부터 지정한 길이만큼 반환 | SELECT LEFT('MariaDB', 4); | 'Mari' |
RIGHT() | 문자열의 오른쪽에서부터 지정한 길이만큼 반환 | SELECT RIGHT('MariaDB', 3); | 'DB' |
LPAD() | 문자열의 왼쪽에 지정된 길이만큼 특정 문자 채우기 | SELECT LPAD('MariaDB', 10, '*'); | '***MariaDB' |
RPAD() | 문자열의 오른쪽에 지정된 길이만큼 특정 문자 채우기 | SELECT RPAD('MariaDB', 10, '*'); | 'MariaDB***' |
LENGTH()
, CHAR_LENGTH()
CONCAT()
INSTR()
, LEFT()
, RIGHT()
, SUBSTRING()
REPLACE()
, INSERT()
LOWER()
, UPPER()
, REVERSE()
TRIM()
, LTRIM()
, RTRIM()
, LPAD()
, RPAD()