MySQL에서 숫자 문자열 비교하기
MySQL에서 숫자로 이루어진 두 문자열을 비교하려면 CAST() 함수를 사용하면 됩니다. CAST() 함수는 문자열 컬럼을 부호 있는 정수(signed) 타입으로 변환해 주기 때문에, varchar 타입으로 저장된 숫자 값도 일반 정수와 동일한 방식으로 비교할 수 있습니다.
기본 문법
숫자 문자열을 비교하는 기본적인 문법은 다음과 같습니다.
select *from yourTableName
where cast(yourColumnName as signed)=yourIntegerValue;
예제 테이블 생성
위 구문을 실제로 이해하기 위해 먼저 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table compareTwoStringDemo
-> (
-> UserId varchar(100)
-> );
Query OK, 0 rows affected (0.78 sec)
데이터 삽입
insert 명령을 사용하여 테이블에 샘플 레코드를 삽입합니다.
mysql> insert into compareTwoStringDemo values('1083745');
Query OK, 1 row affected (0.12 sec)
mysql> insert into compareTwoStringDemo values('9867585');
Query OK, 1 row affected (0.11 sec)
mysql> insert into compareTwoStringDemo values('3547483');
Query OK, 1 row affected (0.15 sec)
mysql> insert into compareTwoStringDemo values('9845646');
Query OK, 1 row affected (0.15 sec)
mysql> insert into compareTwoStringDemo values('9876532');
Query OK, 1 row affected (0.10 sec)저장된 전체 데이터 조회
select 문을 사용하여 테이블에 저장된 모든 레코드를 확인합니다.
mysql> select *from compareTwoStringDemo;
위 쿼리의 실행 결과는 다음과 같습니다.
+---------+
| UserId |
+---------+
| 1083745 |
| 9867585 |
| 3547483 |
| 9845646 |
| 9876532 |
+---------+
5 rows in set (0.00 sec)
CAST() 함수로 숫자 문자열 비교하기
이제 CAST() 함수를 활용하여 숫자 형태의 문자열을 비교하는 쿼리를 살펴보겠습니다. 아래 예제에서는 UserId 컬럼을 signed 정수로 변환한 후 특정 값(3547483)과 비교합니다.
mysql> select *from compareTwoStringDemo
-> where cast(UserId as signed)=3547483;
위 쿼리의 실행 결과는 다음과 같습니다.
+---------+
| UserId |
+---------+
| 3547483 |
+---------+
1 row in set (0.00 sec)
결과를 보면 문자열로 저장된 값 중에서 조건과 일치하는 '3547483'만 정확하게 반환된 것을 확인할 수 있습니다. 이처럼 CAST() 함수를 사용하면 varchar 타입으로 저장된 숫자 문자열도 정수로 변환하여 안정적이고 정확하게 비교할 수 있습니다.