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

MySQL에서 SELECT CASE 결과를 변수에 저장하는 방법

MySQL에서 SELECT CASE 문의 실행 결과를 사용자 정의 변수(@변수)에 저장하고 싶다면, 쿼리 마지막에 INTO @변수명 구문을 추가하면 됩니다. 이번 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 두 개의 정수 컬럼을 가진 테이블을 생성합니다.

mysql> create table DemoTable
    -> (
    -> Num1 int,
    -> Num2 int
    -> );
Query OK, 0 rows affected (0.65 sec)

2. 데이터 삽입하기

INSERT 명령어를 사용해 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable values(10,30);
Query OK, 1 row affected (0.11 sec)

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

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

mysql> select *from DemoTable;

출력 결과

+------+------+
| Num1 | Num2 |
+------+------+
|   10 |   30 |
+------+------+
1 row in set (0.00 sec)

4. SELECT CASE 결과를 변수에 저장하기

다음은 CASE 문의 평가 결과를 변수 @s에 저장하는 쿼리입니다. 조건에 따라 "Equal"(같음), "Greater"(큼), "Lower"(작음) 중 하나의 문자열이 반환됩니다.

mysql> select case
    -> WHEN Num1=Num2 THEN "Equal"
    -> WHEN Num1 > Num2 THEN "Greater"
    -> WHEN Num1 < Num2 THEN "Lower" end
    -> from DemoTable
    -> into @s;
Query OK, 1 row affected (0.01 sec)

여기서 핵심은 쿼리 끝에 붙은 into @s; 부분입니다. 이렇게 하면 CASE 표현식의 결과가 별도의 출력 없이 곧바로 변수에 할당됩니다.

5. 변수 값 확인하기

저장된 변수의 값을 조회해 보겠습니다.

mysql> select @s;

출력 결과

+-------+
| @s    |
+-------+
| Lower |
+-------+
1 row in set (0.00 sec)

결과 분석

테이블에는 Num1 = 10, Num2 = 30인 레코드가 저장되어 있습니다. CASE 조건을 순서대로 평가하면 다음과 같습니다.

  • Num1 = Num2? → 10 = 30은 거짓
  • Num1 > Num2? → 10 > 30은 거짓
  • Num1 < Num2? → 10 < 30은 참 → "Lower" 반환

따라서 변수 @s에는 "Lower"가 저장된 것을 확인할 수 있습니다.

정리

MySQL에서는 SELECT ... INTO @변수명 구문을 활용하면 CASE 문뿐만 아니라 어떤 SELECT 표현식의 결과든 손쉽게 세션 변수에 저장할 수 있습니다. 저장된 변수는 이후 같은 세션 내에서 다른 쿼리나 절차형 로직(예: 저장 프로시저)에서 재사용할 수 있어 매우 유용합니다.