MySQL: VARCHAR 열을 정수로 정렬
데이터베이스는 레거시 시스템이나 외부 종속성으로 인해 숫자를 문자열(VARCHAR)로 저장하는 경우가 많습니다. 이로 인해 표준 문자열 비교를 사용할 때 잘못된 정렬 결과가 발생할 수 있습니다. MySQL에서 이러한 문자열 형식의 숫자를 올바르게 정렬하는 방법은 다음과 같습니다.
최적의 솔루션: 데이터 유형 변환
가장 좋은 방법은 테이블 열의 데이터 유형을 정수(INT, BIGINT 등)로 변경하는 것입니다. 이렇게 하면 적절한 숫자 정렬이 보장되고 향후 문제가 방지됩니다.
대체 방법(데이터 유형 변경이 불가능한 경우):
CAST()
함수를 사용하여 VARCHAR 값을 정수로 명시적으로 변환합니다.<code class="language-sql">SELECT col FROM yourtable ORDER BY CAST(col AS UNSIGNED);</code>
이렇게 하면 MySQL은 정렬 프로세스 중에 값을 숫자로 처리하게 됩니다. UNSIGNED
음수 해석을 방지합니다.
<code class="language-sql">SELECT col FROM yourtable ORDER BY col + 0;</code>
MySQL은 문자열을 숫자로 해석하여 더하기 연산을 시도하고 암시적 변환을 시작합니다.
String Value | Integer Value |
---|---|
'1' | 1 |
'ABC' | 0 |
'123miles' | 123 |
'3' | 0 |
숫자가 아닌 문자의 경우 값이 0이 됩니다. 숫자가 아닌 문자가 앞에 오면 전체 변환이 실패하게 됩니다.
위 내용은 MySQL에서 VARCHAR 숫자를 정수로 정렬하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!