SQL에서 데이터를 다룰 때 문자열을 숫자로 변환해야 할 필요가 있을 수 있습니다. 예를 들어, 사용자 입력이나 가져온 데이터가 문자열 형식으로 저장된 경우 이를 숫자로 변환하여 처리해야 합니다. 이 글에서는 MySQL, PostgreSQL, SQL Server 및 Oracle 데이터베이스에서 문자열을 숫자로 변환하는 방법을 구체적인 예시와 함께 자세히 설명합니다.
MySQL에서의 변환 방법
MySQL에서는 문자열을 숫자로 변환하기 위해 CAST
또는 CONVERT
함수를 사용하는 것이 일반적입니다. 다음은 구체적인 예시입니다.
CAST 함수 사용
CAST 함수를 사용하여 문자열을 숫자로 변환하는 방법은 다음과 같습니다:
SELECT CAST('1234' AS UNSIGNED);
이 쿼리는 문자열 ‘1234’를 정수로 변환합니다. UNSIGNED
를 SIGNED
또는 DECIMAL
로 변경하여 다른 숫자 유형으로 변환할 수 있습니다.
CONVERT 함수 사용
문자열을 숫자로 변환하기 위해 CONVERT
함수를 사용할 수도 있습니다.
SELECT CONVERT('1234', UNSIGNED);
이 쿼리 또한 문자열 ‘1234’를 정수로 변환합니다. 필요한 경우 UNSIGNED
를 다른 숫자 유형으로 변경할 수 있습니다.
실용적인 예시
예를 들어, users
테이블에 문자열로 저장된 나이 데이터를 처리하려면 다음과 같습니다:
SELECT user_id, CAST(age AS UNSIGNED) AS numeric_age FROM users;
이 쿼리는 users
테이블에서 user_id
와 숫자로 변환된 age
를 numeric_age
로 가져옵니다.
PostgreSQL에서의 변환 방법
PostgreSQL에서는 문자열을 숫자로 변환하기 위해 CAST
함수 또는 ::
연산자를 사용하는 것이 일반적입니다. 다음은 구체적인 예시입니다.
CAST 함수 사용
CAST 함수를 사용하여 문자열을 숫자로 변환하는 방법은 다음과 같습니다:
SELECT CAST('1234' AS INTEGER);
이 쿼리는 문자열 ‘1234’를 정수로 변환합니다. INTEGER
를 NUMERIC
또는 FLOAT
로 변경하여 다른 숫자 유형으로 변환할 수 있습니다.
:: 연산자 사용
:: 연산자를 사용하여 문자열을 숫자로 변환할 수도 있습니다.
SELECT '1234'::INTEGER;
이 쿼리 또한 문자열 ‘1234’를 정수로 변환합니다. 필요한 경우 INTEGER
를 다른 숫자 유형으로 변경할 수 있습니다.
실용적인 예시
예를 들어, orders
테이블에 문자열로 저장된 금액 데이터를 처리하려면 다음과 같습니다:
SELECT order_id, CAST(amount AS NUMERIC) AS numeric_amount FROM orders;
이 쿼리는 orders
테이블에서 order_id
와 숫자로 변환된 amount
를 numeric_amount
로 가져옵니다.
SQL Server에서의 변환 방법
SQL Server에서는 문자열을 숫자로 변환하기 위해 CAST
또는 CONVERT
함수를 사용하는 것이 일반적입니다. 다음은 구체적인 예시입니다.
CAST 함수 사용
CAST 함수를 사용하여 문자열을 숫자로 변환하는 방법은 다음과 같습니다:
SELECT CAST('1234' AS INT);
이 쿼리는 문자열 ‘1234’를 정수로 변환합니다. INT
를 DECIMAL
또는 FLOAT
로 변경하여 다른 숫자 유형으로 변환할 수 있습니다.
CONVERT 함수 사용
문자열을 숫자로 변환하기 위해 CONVERT
함수를 사용할 수도 있습니다.
SELECT CONVERT(INT, '1234');
이 쿼리 또한 문자열 ‘1234’를 정수로 변환합니다. 필요한 경우 첫 번째 인수를 다른 숫자 유형으로 변경할 수 있습니다.
실용적인 예시
예를 들어, sales
테이블에 문자열로 저장된 판매 데이터를 처리하려면 다음과 같습니다:
SELECT sale_id, CAST(sale_amount AS DECIMAL(10, 2)) AS numeric_sale_amount FROM sales;
이 쿼리는 sales
테이블에서 sale_id
와 숫자로 변환된 sale_amount
를 numeric_sale_amount
로 가져옵니다.
Oracle에서의 변환 방법
Oracle에서는 문자열을 숫자로 변환하기 위해 TO_NUMBER
함수를 사용하는 것이 일반적입니다. 다음은 구체적인 예시입니다.
TO_NUMBER 함수 사용
TO_NUMBER 함수를 사용하여 문자열을 숫자로 변환하는 방법은 다음과 같습니다:
SELECT TO_NUMBER('1234') FROM dual;
이 쿼리는 문자열 ‘1234’를 숫자로 변환합니다. TO_NUMBER
함수와 함께 형식 모델을 지정할 수도 있습니다.
형식 모델 사용
문자열을 숫자로 변환하기 위해 TO_NUMBER
함수와 함께 형식 모델을 지정할 수 있습니다.
SELECT TO_NUMBER('1,234.56', '9,999.99') FROM dual;
이 쿼리는 콤마와 소수점이 포함된 문자열 ‘1,234.56’을 숫자로 변환합니다.
실용적인 예시
예를 들어, employees
테이블에 문자열로 저장된 급여 데이터를 처리하려면 다음과 같습니다:
SELECT employee_id, TO_NUMBER(salary) AS numeric_salary FROM employees;
이 쿼리는 employees
테이블에서 employee_id
와 숫자로 변환된 salary
를 numeric_salary
로 가져옵니다.
오류 처리 및 고려사항
문자열을 숫자로 변환할 때 다양한 오류가 발생할 수 있습니다. 여기에서는 일반적인 오류와 이를 피하는 방법을 설명합니다.
잘못된 문자열 형식
잘못된 문자열이 포함된 경우 변환이 실패합니다. 예를 들어, 숫자에 알파벳이나 특수 문자가 포함된 경우 변환이 실패합니다. 이러한 경우 변환 전에 데이터 정리가 필요합니다.
SELECT CASE
WHEN ISNUMERIC(column_name) = 1 THEN CAST(column_name AS INT)
ELSE NULL
END AS numeric_column
FROM table_name;
이 쿼리는 SQL Server에서 ISNUMERIC
함수를 사용하여 숫자로 변환할 수 있는 문자열만 변환합니다.
NULL 값 처리
문자열이 NULL인 경우 변환 결과도 NULL이 됩니다. NULL 값이 문제가 되는 경우 기본 값을 설정하는 등의 조치가 필요합니다.
SELECT COALESCE(CAST(column_name AS INT), 0) AS numeric_column
FROM table_name;
이 쿼리는 NULL 값이 포함된 경우 기본 값을 0으로 설정합니다.
잘림 오류
변환하려는 문자열이 대상 숫자 유형의 범위를 초과하면 잘림 오류가 발생합니다. 사전에 문자열의 길이 또는 값을 확인하는 것이 중요합니다.
SELECT CASE
WHEN LENGTH(column_name) <= 10 THEN TO_NUMBER(column_name)
ELSE NULL
END AS numeric_column
FROM table_name;
이 쿼리는 Oracle에서 10자 이하의 문자열만 숫자로 변환합니다.
고려사항
- 사용하는 데이터베이스에 따라 함수와 방법이 다르므로 데이터베이스 별 문서를 참조하는 것이 중요합니다.
- 대량의 데이터를 변환할 때 성능에 미치는 영향을 고려하고 배치 처리 또는 인덱스를 사용하는 것을 고려하십시오.
요약
이 글에서는 주요 데이터베이스에 대한 구체적인 방법으로 SQL에서 문자열을 숫자로 변환하는 방법을 설명했습니다. MySQL에서는 CAST
와 CONVERT
를 사용하고, PostgreSQL에서는 CAST
와 ::
연산자를 사용하며, SQL Server에서는 CAST
와 CONVERT
를 사용하고, Oracle에서는 TO_NUMBER
함수를 사용합니다. 각 데이터베이스에 대한 변환 방법을 이해하고 적절한 방법을 선택함으로써 데이터 무결성을 유지하면서 효율적인 데이터 작업을 보장할 수 있습니다. 변환 중 특정 데이터에 대한 오류 처리 및 고려사항을 고려하는 것이 중요합니다.