我正在创建某种程序,它首先存储数值,稍后,该列中会有字符和单词,所以我将我的数字存储在VARCHAR中。
现在,我正在使用此代码:
GDP.loc[GDP['Country Name'] == "Korea, Rep.", 'Country Name'] = "South Korea"
输出是:
SELECT * FROM biedingen WHERE bod_refferentie=$item ORDER BY bod_bedrag DESC LIMIT 5
有没有办法让我将数值存储在varchar中,但是仍然可以使用与上面相同的方法对它们进行排序?
答案 0 :(得分:6)
您的bod_bedrag
列似乎是varchar
或其他非数字类型。因此,MySQL将列排序为文本而不是数字。这解释了为什么单个数字出现在两位数之前等等。
此处的一种解决方法是在订购时将bod_bedrag
列转换为数字类型:
SELECT *
FROM biedingen
WHERE bod_refferentie=$item
ORDER BY CAST(bod_bedrag AS SIGNED) DESC
LIMIT 5
一个漂亮的替代方案认为排序varchar
数字实际上适用于相同长度的数字。我的意思是,如果您有100, 305, 900
并按升序排序,您将获得此订单。这是避免演员阵容的另一个选择:
SELECT *
FROM biedingen
WHERE bod_refferentie=$item
ORDER BY CHAR_LENGTH(bod_bedrag) DESC,
bod_bedrag DESC
LIMIT 5