Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 문자열 길이에 따라 부분 문자열 또는 사용자 정의 메시지 표시하기

MySQL에서 문자열 길이가 특정 값 이하일 때는 SUBSTRING() 함수로 부분 문자열을 추출하고, 그보다 길 경우에는 사용자 정의 메시지를 출력하고 싶다면 CASE 문과 함께 조건 처리를 하면 됩니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable1402
    -> (
    -> EmployeeName varchar(40)
    -> );
Query OK, 0 rows affected (0.62 sec)

2. 데이터 삽입하기

INSERT 문을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable1402 values('Adam Smith');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1402 values('Chris Brown');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1402 values('David Miller');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1402 values('Carol Taylor');
Query OK, 1 row affected (0.10 sec)

3. 저장된 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select * from DemoTable1402;

위 쿼리는 다음과 같은 결과를 출력합니다.

+--------------+
| EmployeeName |
+--------------+
| Adam Smith   |
| Chris Brown  |
| David Miller |
| Carol Taylor |
+--------------+
4 rows in set (0.00 sec)

4. 조건에 따라 부분 문자열 또는 메시지 출력하기

이제 핵심 쿼리입니다. CHAR_LENGTH() 함수로 이름 길이를 검사하여, 11자 이하면 앞 5글자만 추출하고 그렇지 않으면 사용자 정의 메시지를 반환합니다.

mysql> select *, case when char_length(EmployeeName) <=11 then substring(EmployeeName,1,5)
    -> else 'EmployeeName is greater than 11'
    -> end as Result
    -> from DemoTable1402;

실행 결과는 다음과 같습니다.

+--------------+---------------------------------+
| EmployeeName | Result                          |
+--------------+---------------------------------+
| Adam Smith   | Adam                            |
| Chris Brown  | Chris                           |
| David Miller | EmployeeName is greater than 11 |
| Carol Taylor | EmployeeName is greater than 11 |
+--------------+---------------------------------+
4 rows in set (0.04 sec)

결과 해석

'Adam Smith'와 'Chris Brown'은 길이가 11자 이하이므로 SUBSTRING() 함수를 통해 첫 5글자인 'Adam'과 'Chris'가 출력되었습니다. 반면 'David Miller'(12자)와 'Carol Taylor'(12자)는 조건을 초과했기 때문에 지정한 사용자 정의 메시지가 대신 표시됩니다.

이처럼 MySQL의 CASE 문과 CHAR_LENGTH(), SUBSTRING() 함수를 조합하면 문자열 길이에 따라 유연하게 다른 값을 출력할 수 있습니다.