如何用逗号来解析desc mysql的价格

时间:2014-10-07 00:39:49

标签: php mysql sql

$query = "SELECT * FROM mprice where price BETWEEN '1,000' AND '3,250' ORDER BY CAST( 
REPLACE(price,',', '.') AS decimal(10,2)) LIMIT $from, $max_results"

此查询显示的结果如下

1,000
2,000
3,250
10,900
11,700
27,600

我想要这样

1,000
2,000
3,250
 only

我该怎么做?请帮我解决这个问题。

由于

1 个答案:

答案 0 :(得分:1)

这有点奇怪的功能。我建议您重新访问您的架构设计,如果您有选择这样做,并在价格列中使用数字类型(您可以在另一列中包含本地化信息)。也就是说,可以使用以下查询使其工作:

SELECT
    *
FROM
    mprice
WHERE
    CAST(REPLACE(price, ',', '.') AS decimal(10,2)) BETWEEN 1.00 AND 3.25
ORDER BY
    CAST(REPLACE(price, ',', '.') AS decimal(10,2))

请注意,在您的代码中,您尝试将price限制为'1,000''3,250'之间的值。但是,字符串比较并不适用于数字类型,因为它按字典顺序(按字母顺序)排序,处理数字就像任何其他字符一样。在这种情况下,它包含10,90027,600等值,因为这些字符串的第一个数字位于13之间,这是'1,000'的第一个字符。 1}}和'3,250'

将价格转换为数字时,可以更正此行为。但是,您还需要将过滤值转换为数字,在本例中为1.003.25