我有一个字符串,它被定义为一个或多个点分隔的整数,如12345、543.21、109.87.654等。我将值存储在MySQL数据库中,然后需要查找与提供的值进行比较的行。我想要的是通过将字符串的每个组成部分与输入字符串的相应组成部分进行比较来选择行。对于MySQL中的标准字符串比较,下面是它的详细说明:
mysql> SELECT '543.21' >= '500.21'
-> 1
mysql> SELECT '543.21' >= '5000.21'
-> 1这是很自然的,因为字符串比较是不考虑字符串长度的“字典”比较,但我希望第二个查询的结果为0。
有没有办法向MySQL提供一些关于如何比较这些内容的提示?否则,有没有办法提示ActiveRecord如何为我做这件事呢?现在,我想出的最好的解决方案是选择所有行,然后使用Ruby的split和reject方法过滤结果。(整个数据集相当小,在可预见的未来不太可能增长太多,所以这是一个合理的选择,但如果有更简单的方法,我不会考虑,我很乐意知道。)
发布于 2010-07-17 22:34:35
发布于 2010-07-16 22:37:47
mysql> SELECT '543.21' >= '5000.21';
+-----------------------+
| '543.21' >= '5000.21' |
+-----------------------+
| 1 |
+-----------------------+
1 row in set (0.00 sec)
mysql> SELECT '543.21'+0 >= '5000.21'+0;
+---------------------------+
| '543.21'+0 >= '5000.21'+0 |
+---------------------------+
| 0 |
+---------------------------+
1 row in set (0.00 sec)这确实只适用于有效的浮点数。如果超过1个点,则需要进行大量的SUBSTRING_INDEX(SUBSTRING_INDEX(field, '.', <positionnumber you're comparing>), '.', -1)比较(手动重复比较最大数量的位置)
https://stackoverflow.com/questions/3265913
复制相似问题