我有个表的字段是存储价格的,类型是VARCHAR.例如 name(varchar)    price(varchar)
pingguo              11.3
juzi                 10.9
ada                  950.0
dadaw                610.0
现在我想select出来,并从低到高排序,select * from table order by `price` asc可是发现,是错误的,并不是按数字从小到大排的。 可能是因为类型是varchar造成的。想问下高手们,如果用varchar存储的这种浮点类型的数据,怎么排序啊? 选出最小的

解决方案 »

  1.   

    select * from table order by 0+`price` asc
      

  2.   

    select * from table order by `price`+0 asc;用+0的办法来处理字符转数字,效果很好。MYSQL也会隐式转换滴。
      

  3.   

    下面是mysql最常见的类型转换功能:1) 把数据加上一个0或0.0 能把它强制转换为数值型2) floor函数会把浮点数强制转换为整数3) 给一个整数加上一个0.0会强制转换为浮点数4) concat函数能把任何类型强制转换为字符串5) hex函数能把字符串强制转换为十六进制数6) ascii函数能把字符转换为ascii码7) data_add函数能够把字符串或者数值转换为日期和时间值8) 给日期和时间值加上一个0,可以强制转换为数值