sql >> Database >  >> RDS >> Mysql

MAX(Kolom) geeft mij een verkeerde waarde

Deze situatie kan optreden als uw invoice_number wordt opgeslagen als een tekstkolom, b.v. varchar(10) . In dat geval is 9 op alfabetische volgorde de maximale waarde.

Idealiter zou u waarden waarop u numerieke bewerkingen wilt uitvoeren, moeten opslaan als numerieke datatypes, b.v. int . Als u echter om de een of andere reden het gegevenstype van de kolom niet kunt wijzigen, kunt u proberen de kolom te casten voordat u MAX toepast. , zoals zo:

select max (convert(invoice_number, signed integer)) as maxinv from invoice

OPMERKING:ik noem specifiek "waarden waarop u numerieke bewerkingen wilt uitvoeren" omdat er gevallen zijn waarin de invoertekst volledig numeriek is, zoals telefoonnummers of misschien creditcardnummers, maar er is geen scenario waarin u 2 telefoonnummers zou willen toevoegen of de vierkantswortel van een creditcardnummer zou willen nemen. Dergelijke waarden moeten als tekst worden opgeslagen.



  1. Top 9 tips voor het opzetten van uw SQL Server-cluster

  2. SQL voor hiërarchische relatie

  3. Ga door met het invullen van HTML-formulieren na het sluiten en opnieuw openen

  4. Hoe een lege string voor integer in MySQL toe te staan?