Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

จะเลือกคอลัมน์สตริง / int ผสมสูงสุดใน MySQL ได้อย่างไร


ในการเลือกจำนวนสูงสุดของคอลัมน์ผสมสตริง/int คุณต้องใช้ฟังก์ชัน substring() ไวยากรณ์มีดังนี้:

เลือก MAX(CAST(SUBSTRING(yourColumnName, 4, length(yourColumnName)-3) AS UNSIGNED)) AS anyVariableName FROM yourTableName;

เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้:

mysql> สร้างตาราง StringIntMixHighestDemo -> ( -> InvoiceId int NOT NULL AUTO_INCREMENT, -> InvoiceNumber varchar(20), -> PRIMARY KEY(InvoiceId) -> );Query OK, 0 แถวได้รับผลกระทบ (0.65 วินาที) 

ตอนนี้คุณสามารถแทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้:

mysql> แทรกลงในค่า StringIntMixHighestDemo(InvoiceNumber) ('INV129'); ตกลง แบบสอบถาม 1 แถวได้รับผลกระทบ (0.11 วินาที)mysql> แทรกลงในค่า StringIntMixHighestDemo (InvoiceNumber) ('INV122'); ตกลง มีผล 1 แถว ( 0.22 วินาที) mysql> แทรกลงใน StringIntMixHighestDemo (InvoiceNumber) ค่า ('INV1'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงใน StringIntMixHighestDemo (InvoiceNumber) ค่า ('INV145'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.18 วินาที) mysql> แทรกลงในค่า StringIntMixHighestDemo (InvoiceNumber) ('INV19'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.10 วินาที) mysql> แทรกลงในค่า StringIntMixHighestDemo (InvoiceNumber) ('INV134'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.13 วินาที) mysql> แทรกลงในค่า StringIntMixHighestDemo (InvoiceNumber) ('INV135'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่า StringIntMixHighestDemo (InvoiceNumber) ('INV10'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.14 วินาที) mysql> แทรกลงในค่า StringIntMixHighestDemo (InvoiceNumber) ('INV100'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.11 วินาที) mysql> ใน แทรกลงในค่า StringIntMixHighestDemo(InvoiceNumber) ('INV121'); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.27 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้:

mysql> เลือก *จาก StringIntMixHighestDemo;

ต่อไปนี้เป็นผลลัพธ์:

<ก่อนหน้า>+-----------+--------------+| หมายเลขใบแจ้งหนี้ | หมายเลขใบแจ้งหนี้ |+-----------+--------------+| 1 | INV129 || 2 | INV122 || 3 | INV1 || 4 | INV145 || 5 | INV19 || 6 | INV134 || 7 | INV135 | | 8 | INV10 || 9 | INV100 || 10 | INV121 |+-----------+--------------+10 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อรับค่าสูงสุดในคอลัมน์สตริง/int แบบสอบถามมีดังนี้:

mysql> SELECT MAX(CAST(SUBSTRING(InvoiceNumber, 4, length(InvoiceNumber)-3) AS UNSIGNED)) เป็น HighestValue -> จาก StringIntMixHighestDemo;

ต่อไปนี้เป็นผลลัพธ์:

<ก่อนหน้า>+-------------+| มูลค่าสูงสุด |+-------------+| 145 |+--------------+1 แถวในชุด (0.00 วินาที)