MySQL ORDER BY不适用于数字

Lun*_*una 3 java mysql

ORDER BY对数字不能正常工作,但是如果我给出包含字母数字或仅包含字符的列,它就能正常工作.我给的代码是,

dbResult = dbStatement.executeQuery("SELECT Bid_Number,Vendor_Name,Vendor_Address,Amount,Tax_Percentage,Amount_Aftertax,Expected_Deliverydate,Vendor_Code FROM purchase_bid    where PE_Number='"+PENumber+"' ORDER BY Amount_Aftertax ASC"); 
Run Code Online (Sandbox Code Playgroud)

如果在我的表中,我的Amount_Aftertax列值为,

840.0
780.0
3180.0
3810.0

通过提供此代码,我按照此顺序获得结果

3180.0
3810.0
780.0
840.0

希望得到答复...在此先感谢..

Jon*_*eet 7

听起来你的列类型仍然是一个文本列,即使它包含数字 - 所以它们按字典顺序排序.如果您希望将它们视为数字,则应将类型设为数字.

当然,这不仅会影响排序 - 当您为列使用适当的类型时,所有代码都可能会得到改善.仅仅因为你可以在字符串中粘贴任何数据并不意味着它是个好主意.选择与所涉及的实际数据最匹配的数据类型.

此外,您不应该像这样指定PENumber值 - 您应该使用预准备语句,在SQL中使用占位符参数,您可以单独提供值.动态构造SQL可能会导致SQL注入漏洞,以及不必要的转换以及代码与数据的分离.