[SQL] MySQL의 쿼리에서 숫자로 변환 텍스트
SQLMySQL의 쿼리에서 숫자로 변환 텍스트
그것은 MySQL의 쿼리에서 숫자로 텍스트를 변환 할 수 있습니까? 나는 이름과 "이름 - 번호"의 형식에 숫자를 구성 식별자와 열을 가지고있다. 열이 VARCHAR의 유형이 있습니다. 나는 수 (동일한 이름을 가진 행)에 따라 행을 정렬하고 싶지만 열이 할 일 문자 순서, 즉에 따라 정렬됩니다
name-1
name-11
name-12
name-2
나는 수에 잘라 경우, 나는 '진짜'번호로 'VARCHAR'수를 변환하고 행을 정렬하는 데 사용할 수 있습니다? 내가 얻은 다음과 같은 순서로 싶습니다.
name-1
name-2
name-11
name-12
나는 별도의 열로 수를 나타냅니다 수 없습니다.
편집 2011-05-11 9시 32분
나는 그것이 그 솔루션을 사용하는 저장되는 이름에 숫자를 포함하지 않을 경우 * 1. 열 BY 솔루션 ... ORDER 다음 발견?
해결법
-
==============================
1.이 작업을해야합니다 :
이 작업을해야합니다 :
SELECT field,CONVERT(SUBSTRING_INDEX(field,'-',-1),UNSIGNED INTEGER) AS num FROM table ORDER BY num;
-
==============================
2.당신은 SUBSTRING 및 CONVERT를 사용할 수 있습니다 :
당신은 SUBSTRING 및 CONVERT를 사용할 수 있습니다 :
SELECT stuff FROM table WHERE conditions ORDER BY CONVERT(SUBSTRING(name_column, 6), SIGNED INTEGER);
어디 name_column는 "이름 -"값으로 열입니다. 하위 문자열 제거합니다의 여섯 번째 문자 전에 모든 것을까지 (즉, "이름 -"접두사)와 다음 CONVERT는 실제 정수로 남아 변환합니다.
업데이트 : 코멘트에 주어진 변화하는 환경 (즉, 접두사 아무것도 할 수있다), 당신이 믹스에서 찾은 던져해야합니다 :
ORDER BY CONVERT(SUBSTRING(name_column, LOCATE('-', name_column) + 1), SIGNED INTEGER);
물론 이것은 숫자가 아닌 접두사 관련 코멘트가 말한다 그것을하지만 어떤 하이픈이없는 것으로 가정합니다 :
그래서 안전한 가정해야한다.
-
==============================
3.간단하게 사용 CAST,
간단하게 사용 CAST,
CAST(column_name AS UNSIGNED)
캐스트 결과에 대한 유형은 다음 값 중 하나 일 수 있습니다 :
BINARY[(N)] CHAR[(N)] DATE DATETIME DECIMAL[(M[,D])] SIGNED [INTEGER] TIME UNSIGNED [INTEGER]
-
==============================
4.당신이 int로 문자열로 변환하는 CAST ()를 사용할 수 있습니다. 예를 들면 SELECT CAST ( '123'AS INTEGER);
당신이 int로 문자열로 변환하는 CAST ()를 사용할 수 있습니다. 예를 들면 SELECT CAST ( '123'AS INTEGER);
-
==============================
5.
SELECT *, CAST(SUBSTRING_INDEX(field, '-', -1) AS UNSIGNED) as num FROM tableName ORDER BY num;
-
==============================
6.하나의 간단한 방법 SELECT '123'+ 0
하나의 간단한 방법 SELECT '123'+ 0
-
==============================
7.다음 변환 - SUBSTRING_INDEX와 숫자 시도 ( '', 1 필드를) 얻을 수 있습니다.
다음 변환 - SUBSTRING_INDEX와 숫자 시도 ( '', 1 필드를) 얻을 수 있습니다.
-
==============================
8.기본 키는 형식의 문자열이 같은 경우 ABC / EFG / EE / 123분의 13 (서열 번호) 문자열의 정렬이 쉽게 구분과 분류에 사용할 수 있습니다 ( "/")
기본 키는 형식의 문자열이 같은 경우 ABC / EFG / EE / 123분의 13 (서열 번호) 문자열의 정렬이 쉽게 구분과 분류에 사용할 수 있습니다 ( "/")
우리는 키 이러한 유형의 테이블을 주문하려면 다음 쿼리를 사용할 수 있습니다
SELECT * FROM `TABLE_NAME` ORDER BY CONVERT(REVERSE(SUBSTRING(REVERSE(`key_column_name`), 1, LOCATE('/', REVERSE(`key_column_name`)) - 1)) , UNSIGNED INTEGER) DESC
-
==============================
9.
cast(REGEXP_REPLACE(NameNumber, '[^0-9]', '') as UNSIGNED)
-
==============================
10.일반적인 방법은해야 할 일 :
일반적인 방법은해야 할 일 :
SELECT * FROM your_table ORDER BY LENTH(your_column) ASC, your_column ASC
from https://stackoverflow.com/questions/5960620/convert-text-into-number-in-mysql-query by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 참조 별칭은 WHERE 절에서 (SELECT에서 계산) (0) | 2020.04.09 |
---|---|
[SQL] 어떻게 PowerShell을에서 SQL Server 쿼리를 실행합니까? (0) | 2020.04.09 |
[SQL] 각 행은 쿼리에 의해 반환에 대해 한 번 어떻게 저장 프로 시저를 실행합니까? (0) | 2020.04.09 |
[SQL] 하나 개의 컬럼에 대한 DISTINCT (0) | 2020.04.09 |
[SQL] 데이터베이스 (1)를 사용하여 한 번에 적 있나요 : 1 개 관계가 의미가? (0) | 2020.04.09 |