Programing

MySQL 쿼리에서 텍스트를 숫자로 변환

crosscheck 2020. 7. 12. 09:51
반응형

MySQL 쿼리에서 텍스트를 숫자로 변환


MySQL 쿼리 내에서 텍스트를 숫자로 변환 할 수 있습니까? 이름과 "이름-번호"형식의 숫자로 구성된 식별자가있는 열이 있습니다. 열에 VARCHAR 유형이 있습니다. 숫자 (같은 이름을 가진 행)에 따라 행을 정렬하고 싶지만 열은 문자 순서에 따라 정렬됩니다.

name-1
name-11
name-12
name-2

숫자를 잘라 내면 'varchar'숫자를 '실제'숫자로 변환하고이를 사용하여 행을 정렬 할 수 있습니까? 다음 순서로 입수하고 싶습니다.

name-1
name-2
name-11
name-12

숫자를 별도의 열로 나타낼 수 없습니다.

편집 2011-05-11 9:32

다음 해결책을 찾았습니다 ... ORDER BY column * 1. 이름에 숫자가 포함되어 있지 않으면 해당 솔루션을 사용하기 위해 저장됩니까?


이것은 작동해야합니다 :

SELECT field,CONVERT(SUBSTRING_INDEX(field,'-',-1),UNSIGNED INTEGER) AS num
FROM table
ORDER BY num;

당신은 사용할 수 있습니다 SUBSTRINGCONVERT:

SELECT stuff
FROM table
WHERE conditions
ORDER BY CONVERT(SUBSTRING(name_column, 6), SIGNED INTEGER);

name_column"name-"값이있는 열은 어디에 있습니까 ? SUBSTRING제거합니다의 여섯 번째 문자 전에 모든 것을까지 (즉, "이름 -"접두사)와 그 다음 CONVERT변환은 진정한 정수로 남아.

업데이트 : 주석에서 변화하는 환경을 고려할 때 (즉 접두사가 무엇이든 될 수 있음) LOCATE믹스 를 던져야합니다 .

ORDER BY CONVERT(SUBSTRING(name_column, LOCATE('-', name_column) + 1), SIGNED INTEGER);

물론 이것은 숫자가 아닌 접두어에 하이픈이 없다고 가정하지만 관련 의견은 다음과 같이 말합니다.

name 일련의 문자가 될 수 있습니다

안전한 가정이되어야합니다.


단순히 CAST를 사용하십시오.

CAST(column_name AS UNSIGNED)

캐스트 결과의 유형은 다음 값 중 하나 일 수 있습니다.

BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL[(M[,D])]
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]

CAST ()사용 하여 문자열을 int로 변환 할 수 있습니다 . 예 :SELECT CAST('123' AS INTEGER);


SELECT *, CAST(SUBSTRING_INDEX(field, '-', -1) AS UNSIGNED) as num FROM tableName ORDER BY num;

숫자를 얻으려면 시도하고 SUBSTRING_INDEX(field, '-', 1)변환하십시오.


기본 키가

ABC / EFG / EE / 13 / 123 (시퀀스 번호)와
같은 형식의 문자열 인 경우이 문자열을 구분 기호 ( "/")로 정렬하는 데 쉽게 사용할 수 있습니다.

다음 쿼리를 사용하여이 유형의 키가있는 테이블을 정렬 할 수 있습니다.

SELECT * FROM `TABLE_NAME` ORDER BY 
CONVERT(REVERSE(SUBSTRING(REVERSE(`key_column_name`), 1, LOCATE('/', REVERSE(`key_column_name`)) - 1)) , UNSIGNED INTEGER) DESC

간단한 방법으로 SELECT '123'+ 0


일반적인 방법 :

SELECT * FROM your_table ORDER BY LENTH(your_column) ASC, your_column ASC

참고 URL : https://stackoverflow.com/questions/5960620/convert-text-into-number-in-mysql-query

반응형