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

MySQL에서 혼합 문자열/int 열의 최대값을 선택하는 방법은 무엇입니까?

<시간/>

string/int 열의 혼합 최대값을 선택하려면 substring() 함수를 사용해야 합니다. 구문은 다음과 같습니다.

SELECT MAX(CAST(SUBSTRING(yourColumnName, 4, length(yourColumnName)-3) AS UNSIGNED)) AS anyVariableName FROM yourTableName;

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

mysql> create table StringIntMixHighestDemo -> ( -> InvoiceId int NOT NULL AUTO_INCREMENT, -> InvoiceNumber varchar(20), -> PRIMARY KEY(InvoiceId) -> );쿼리 OK, 영향을 받는 행 0개(0.65초) 

이제 insert 명령을 사용하여 테이블에 일부 레코드를 삽입할 수 있습니다. 쿼리는 다음과 같습니다.

mysql> insert into StringIntMixHighestDemo(InvoiceNumber) values('INV129');Query OK, 1행 영향(0.11초)mysql> insert into StringIntMixHighestDemo(InvoiceNumber) values('INV122');Query OK, 1행 영향( 0.22초)mysql> StringIntMixHighestDemo(InvoiceNumber) 값('INV1')에 삽입 0.18초)mysql> StringIntMixHighestDemo(InvoiceNumber) 값('INV19')에 삽입 0.13초)mysql> StringIntMixHighestDemo(InvoiceNumber) 값에 삽입('INV135');쿼리 OK, 1행 영향(0.16초)mysql> StringIntMixHighestDemo(InvoiceNumber) 값에 삽입('INV10');쿼리 OK, 1행 영향( 0.14초)mysql> StringIntMixHighestDemo(InvoiceNumber) values('INV100')에 삽입 StringIntMixHighestDemo(InvoiceNumber) values('INV121')에 삽입, 쿼리 확인, 1행 영향(0.27초)

select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다.

mysql> select *from StringIntMixHighestDemo;

다음은 출력입니다.

+-----------+---------------+| 인보이스 ID | 송장 번호 |+-----------+--------------+| 1 | INV129 || 2 | INV122 || 3 | INV1 || 4 | INV145 || 5 | INV19 || 6 | INV134 || 7 | INV135 | | 8 | INV10 || 9 | INV100 || 10 | INV121 |+-----------+---------------+10행 세트(0.00초)

다음은 string/int 열의 최대값을 구하는 쿼리입니다. 쿼리는 다음과 같습니다.

mysql> SELECT MAX(CAST(SUBSTRING(InvoiceNumber, 4, length(InvoiceNumber)-3) AS UNSIGNED)) as HighestValue -> from StringIntMixHighestDemo;

다음은 출력입니다.

+--------------+| 최고값 |+--------------+| 145 |+--------------+1 행 세트(0.00초)