MySQL에서는 내장 함수 두 가지를 사용해 손쉽게 Base64 인코딩과 디코딩을 처리할 수 있습니다.
- TO_BASE64() – 값을 Base64로 인코딩
- FROM_BASE64() – 인코딩된 값을 원래 값으로 디코딩
기본 문법
Base64 인코딩의 기본 문법은 다음과 같습니다.
SELECT TO_BASE64(anyValue) AS AnyVariableName;
Base64 디코딩의 기본 문법은 다음과 같습니다.
SELECT FROM_BASE64(encodeValue) AS anyVariableName;
위 문법을 실제 예제를 통해 자세히 살펴보겠습니다.
사례 1 – 인코딩(Encode)
값을 Base64로 인코딩하려면 TO_BASE64() 함수를 사용합니다. 쿼리는 다음과 같습니다.
mysql> SELECT TO_BASE64('Password') AS Base64EncodeValue;출력 결과
+-------------------+ | Base64EncodeValue | +-------------------+ | UGFzc3dvcmQ= | +-------------------+ 1 row in set (0.00 sec)
'Password'라는 문자열이 'UGFzc3dvcmQ='로 변환된 것을 확인할 수 있습니다.
사례 2 – 디코딩(Decode)
인코딩된 값을 다시 원래 값으로 되돌리려면 FROM_BASE64() 함수를 사용합니다. 쿼리는 다음과 같습니다.
mysql> SELECT FROM_BASE64('UGFzc3dvcmQ=') AS Base64DecodeValue;출력 결과
+-------------------+ | Base64DecodeValue | +-------------------+ | Password | +-------------------+ 1 row in set (0.00 sec)
디코딩 결과 'UGFzc3dvcmQ='가 다시 'Password'로 복원된 것을 확인할 수 있습니다.
테이블을 활용한 실전 예제
이제 테이블을 직접 만들어 실전에서 어떻게 활용되는지 알아보겠습니다. 먼저 테이블 생성 쿼리는 다음과 같습니다.
mysql> CREATE TABLE Base64Demo -> ( -> ProductId VARCHAR(100) -> ); Query OK, 0 rows affected (0.54 sec)
INSERT 명령으로 몇 개의 레코드를 추가해 보겠습니다.
mysql> INSERT INTO Base64Demo VALUES('321Product');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO Base64Demo VALUES('Product456');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO Base64Demo VALUES('654Product');
Query OK, 1 row affected (0.15 sec)SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> SELECT * FROM Base64Demo;
출력 결과
+------------+ | ProductId | +------------+ | 321Product | | Product456 | | 654Product | +------------+ 3 rows in set (0.00 sec)
컬럼 전체를 Base64로 인코딩하기
이제 저장된 ProductId 컬럼의 모든 값을 Base64로 인코딩해 보겠습니다.
mysql> SELECT TO_BASE64(ProductId) AS Base64Encode FROM Base64Demo;
출력 결과
+------------------+ | Base64Encode | +------------------+ | MzIxUHJvZHVjdA== | | UHJvZHVjdDQ1Ng== | | NjU0UHJvZHVjdA== | +------------------+ 3 rows in set (0.00 sec)
디코딩 검증하기
마지막으로 첫 번째 인코딩 값을 디코딩했을 때 원래 값이 제대로 복원되는지 교차 검증해 보겠습니다.
mysql> SELECT FROM_BASE64('MzIxUHJvZHVjdA==') AS DecodeValue;출력 결과
+-------------+ | DecodeValue | +-------------+ | 321Product | +-------------+ 1 row in set (0.00 sec)
결과적으로 처음 입력했던 '321Product'라는 원래 값이 그대로 복원되었습니다. 이처럼 MySQL의 TO_BASE64()와 FROM_BASE64() 함수를 사용하면 데이터를 간편하게 Base64 형식으로 변환하거나 되돌릴 수 있습니다. 특히 문자열 데이터를 안전하게 전송하거나 저장할 때 유용하게 활용할 수 있습니다.