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

MySQL에서 따옴표로 묶인 숫자 뒤에 숫자가 아닌 텍스트가 있을 때 덧셈은 어떻게 평가될까?

MySQL에서 문자열 형태의 숫자, 즉 따옴표 안에 포함된 숫자끼리 덧셈을 수행할 때, 숫자 뒤에 숫자가 아닌 텍스트(Kg, Oz 등의 단위)가 붙어 있으면 어떻게 처리될까요?

MySQL은 이런 경우 숫자가 아닌 텍스트 부분을 단순히 버리고(discard), 숫자 값만 추출하여 덧셈을 수행합니다. 다만 결과는 정상적으로 반환되지만 경고(warning)가 함께 발생한다는 점에 유의해야 합니다.

예제

아래 예제는 '1525 Kg'과 '200 Oz'라는 문자열을 더하는 상황을 보여줍니다. 각 문자열에는 숫자 뒤에 단위 텍스트가 포함되어 있습니다.

mysql> Select '1525 Kg' + '200 Oz' As Total;
+-------+
| Total |
+-------+
| 1725  |
+-------+
1 row in set, 2 warnings (0.00 sec)

결과 분석

쿼리 실행 결과를 보면 다음과 같은 특징을 확인할 수 있습니다.

- MySQL은 각 문자열에서 숫자 부분인 1525200만 인식하여 더한 값 1725를 반환했습니다.
- 단위 텍스트인 'Kg'와 'Oz'는 평가 과정에서 무시되었습니다.
- 동시에 2개의 경고(2 warnings)가 발생했는데, 이는 문자열을 숫자로 변환하는 과정에서 잘못된 데이터가 잘려나갔음을 알려주는 경고입니다.

이처럼 MySQL은 암시적 타입 변환(implicit type conversion)을 통해 문자열을 숫자로 변환하며, 변환할 수 없는 텍스트는 버리지만 경고를 통해 사용자에게 이를 알립니다. 실무에서는 데이터 정확성을 위해 SHOW WARNINGS 명령으로 경고 내용을 확인하고, 가능하면 숫자와 단위를 분리하여 저장하는 것이 좋습니다.