[Day 10 | DB] MariaDB 내장 함수: 문자열 함수 (String Functions)

y♡ding·2024년 10월 25일
0

데브코스 TIL

목록 보기
61/163

SQL 문자열 함수 (String Functions)

문자열 함수는 데이터베이스 내의 문자열을 다루는 함수들로, 문자열의 길이 확인, 조합, 치환, 특정 위치의 문자 추출 등 다양한 처리를 제공합니다. 아래는 자주 사용되는 함수와 예제 코드입니다.


1. 문자열 길이 확인

  • 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)가 출력됩니다.

2. 문자열 합치기 (CONCAT)

  • 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;

3. 특정 문자 위치 찾기 (INSTR / SUBSTRING)

  • INSTR(): 특정 문자열 내에 다른 문자열이 처음 등장하는 위치를 반환, 없을 경우 0 반환.

    SELECT INSTR('mariadb database study', 'fa');
  • LEFT, RIGHT, SUBSTRING(): 문자열에서 원하는 부분을 추출

    • 왼쪽부터 5자리: LEFT()
      SELECT LEFT('mariadb database study', 5);
    • 오른쪽부터 5자리: RIGHT()
      SELECT RIGHT('mariadb database study', 5);
    • 특정 위치에서 시작해 지정한 길이만큼: SUBSTRING()
      SELECT SUBSTRING('mariadb database study', 5, 5);
  • 예제: 이름이 's'로 시작하는 사원 정보 출력

    1. LEFT() 사용:
      SELECT empno, ename, sal FROM emp WHERE LEFT(ename, 1) = 's';
    2. INSTR() 사용:
      SELECT empno, ename, sal FROM emp WHERE INSTR(ename, 's') = 1;

4. 문자열 치환 및 삽입

  • REPLACE(): 특정 문자열을 다른 문자열로 대체
    SELECT REPLACE('mariadb database study', 'study', '스터디');
  • INSERT(): 문자열 내의 특정 위치에 다른 문자열을 삽입
    SELECT INSERT('mariadb database study', 9, 8, '데이터베이스');

5. 문자열 변환

  • 대소문자 변환:

    • 소문자로 변환: LOWER()
      SELECT LOWER('ABC');
    • 대문자로 변환: UPPER()
      SELECT UPPER('abc');
  • 문자열 뒤집기:

    SELECT REVERSE('ABC');

6. 공백 처리 및 자리 맞추기

  • 공백 제거:

    • 왼쪽 공백 제거: 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()

0개의 댓글

관련 채용 정보