zoukankan      html  css  js  c++  java
  • mysql中比较字符串类型数字

    操作的表:

    select * from test_max_min;

    +----+----------+-------------------+

    | id | area     | best_history_data |

    +----+----------+-------------------+

    |  1 | beijing  | 33                |

    |  2 | beijing  | 22                |

    |  3 | shanghai | 18                |

    |  4 | shanghai | 2                 |

    |  5 | chengdu  | 1                 |

    |  6 | chengdu  | 2                 |

    |  7 | henan    | 13                |

    |  8 | henan    | 12                |

    +----+----------+-------------------+

    其中,表结构如下:

    desc test_max_min;

    +-------------------+-------------+------+-----+---------+-------+

    | Field             | Type        | Null | Key | Default | Extra |

    +-------------------+-------------+------+-----+---------+-------+

    | id                | int(11)     | NO   |     | 0       |       |

    | area              | varchar(45) | NO   |     | NULL    |       |

    | best_history_data | varchar(45) | YES  |     | NULL    |       |

    +-------------------+-------------+------+-----+---------+-------+

    期待:将best_history_data按照顺序排序

    但是,直接执行select * from test_max_min order by best_history_data;获取到的结果如下:

    +----+----------+-------------------+

    | id | area     | best_history_data |

    +----+----------+-------------------+

    |  5 | chengdu  | 1                 |

    |  8 | henan    | 12                |

    |  7 | henan    | 13                |

    |  3 | shanghai | 18                |

    |  4 | shanghai | 2                 |

    |  6 | chengdu  | 2                 |

    |  2 | beijing  | 22                |

    |  1 | beijing  | 33                |

    +----+----------+-------------------+

    可以看出,best_history_data的排序中2在18的后边,不符合我们的预期。。。原因是best_history_data是字符串类型的数字,字符串比较大小是逐位从高位到低位逐个比较,所以字符串类型的数字18<2

    如何解决:使用+0即可

    select * from test_max_min order by best_history_data+0;

    +----+----------+-------------------+

    | id | area     | best_history_data |

    +----+----------+-------------------+

    |  5 | chengdu  | 1                 |

    |  4 | shanghai | 2                 |

    |  6 | chengdu  | 2                 |

    |  8 | henan    | 12                |

    |  7 | henan    | 13                |

    |  3 | shanghai | 18                |

    |  2 | beijing  | 22                |

    |  1 | beijing  | 33                |

    +----+----------+-------------------+

     

  • 相关阅读:
    Python:在一个moudle如何引入另一个moudle下面的包
    RobotFramework做自动化中,能定位到iFrame里面,怎么在iFrame里面输入文字?
    RobotFramework框架做自动化的过程中,遇到不能选择下拉框问题
    雕刻机虚拟仿真及上位机设计(Labview上位机+Proteus仿真)
    医学成像原理——NMR/MRI成像基础
    数字图像处理(二) 灰度变换与空域滤波
    数字图像处理(一) 数字图像基础
    Python爬虫笔记
    python数据分析-第一周
    pyhton-web开发
  • 原文地址:https://www.cnblogs.com/mianbaoshu/p/12058944.html
Copyright © 2011-2022 走看看