Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

숫자가있는 문자열로 MySQL 주문?

<시간/>

숫자가 있는 MySQL 주문 문자열에 대해 다음은 ORDER BY, SUBSTR() 및 CAST() -

를 사용한 구문입니다.
SELECT *FROM yourTableName ORDER BYSUBSTR(yourColumnName FROM 1 FOR 2),CAST(SUBSTR(yourColumnName FROM 2) AS UNSIGNED);

위의 구문을 이해하기 위해 테이블을 생성해 보겠습니다. 테이블을 생성하는 쿼리는 다음과 같습니다 -

mysql> 테이블 OrderByStringWithNumbers 생성 -> ( -> Id int NOT NULL AUTO_INCREMENT, -> Words varchar(10), -> PRIMARY KEY(Id) -> );쿼리 OK, 영향을 받는 행 0개(0.86초) 

삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다 -

mysql> insert into OrderByStringWithNumbers(Words) values('A10');Query OK, 1행 영향(0.19초)mysql> insert into OrderByStringWithNumbers(Words) values('A30');Query OK, 1행 영향( 0.19초)mysql> OrderByStringWithNumbers(Words) 값에 삽입('A12');쿼리 OK, 1행 영향(0.13초)mysql> OrderByStringWithNumbers(Words) 값에 삽입('A11');쿼리 OK, 1행 영향( 0.17초)mysql> OrderByStringWithNumbers(Words) 값('A28')에 삽입 0.20초)

select 문을 사용하여 테이블의 모든 레코드 표시 -

mysql> 선택 *from OrderByStringWithNumbers;

다음은 출력입니다 -

+----+-------+| 아이디 | 단어 |+----+-------+| 1 | A10 || 2 | A30 || 3 | A12 || 4 | A11 || 5 | A28 || 6 | A21 |+----+-------+6행 세트(0.00초)

다음은 숫자가 있는 문자열로 정렬하는 쿼리입니다 -

mysql> select *from OrderByStringWithNumbers order by -> substr(2 for 1), -> cast(substr(Words from 2) AS UNSIGNED);

다음은 출력입니다 -

+----+-------+| 아이디 | 단어 |+----+-------+| 1 | A10 || 4 | A11 || 3 | A12 || 6 | A21 || 5 | A28 || 2 | A30 |+----+-------+6행 세트(0.00초)