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

MySQL에서 문자열 숫자를 더할 때 숫자 사이에 비숫자 텍스트가 있으면 어떻게 평가될까?

따옴표로 묶인 문자열 형태의 숫자들을 더할 때, 그 문자열 안에 숫자가 아닌 텍스트가 포함되어 있다면 MySQL은 해당 문자열의 첫 번째 숫자만 사용하여 덧셈을 계산하고, 경고(warning)를 함께 반환합니다.

MySQL은 문자열을 숫자로 변환할 때 문자열의 시작 부분부터 유효한 숫자 부분까지만 읽어들이기 때문입니다. 이러한 동작 방식은 다음 예시를 통해 확인할 수 있습니다.

예시

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

위 쿼리 결과를 보면, MySQL은 첫 번째 문자열에서 숫자 부분인 1525만 추출하여 이를 200과 더해 1725라는 결과를 반환했습니다. 곱셈 기호(*)와 숫자 2처럼 뒤따르는 비숫자 텍스트는 모두 무시됩니다.

경고 메시지 확인하기

쿼리 실행 시 반환된 경고의 내용이 궁금하다면 SHOW WARNINGS; 문을 실행해 확인할 수 있습니다. 일반적으로 "Truncated incorrect DOUBLE value"와 같은 메시지가 출력되며, 이는 잘못된 값이 잘려나갔다는 의미입니다.

참고 사항

만약 문자열이 숫자가 아닌 텍스트로 시작한다면(예: 'abc123'), MySQL은 해당 값을 0으로 간주합니다. 따라서 문자열 데이터를 산술 연산에 사용할 때는 항상 주의해야 하며, 가능하면 명시적으로 숫자 타입으로 변환하거나 CAST 함수를 활용하는 것이 안전합니다.