MySQL搜索双重货币格式

时间:2016-02-26 04:01:23

标签: php mysql

我有一个基于PHP的应用程序,用于存储用户输入的发票。目前我将发票金额存储在MySQL数据库表中,如double所示:

+------+--------------+--------------+----------------+----------------+-------------+-----------+---------------+-------------+-------------+-----------------+
| id   | date_entered | invoice_date | invoice_number | invoice_amount | client_type | unique_id | supplier_type | supplier_id | category_id | childcare_hours |
+------+--------------+--------------+----------------+----------------+-------------+-----------+---------------+-------------+-------------+-----------------+
|    1 | 1411098397   | 1411048800   | 123            |           0.01 |           0 |       137 |             0 |         139 |           5 |            NULL |
|    2 | 1412123404   | 1416920400   | 5093           |            130 |           0 |       168 |             0 |          19 |          18 |            NULL |
|    3 | 1412125933   | 1412085600   | 000            |             79 |           0 |       151 |             0 |         177 |           8 |            NULL |
|    4 | 1412645652   | 1412600400   | 000            |           60.8 |           0 |       104 |             0 |         179 |           9 |            NULL |
|    5 | 1412647563   | 1409320800   | 804560         |          225.5 |           0 |        18 |             0 |         174 |          10 |            NULL |

我也在使用DataTable来组织数据。我正在使用服务器端处理来执行数据查找以返回为JSON。

我遇到的问题是用户正在尝试通过键入$123123.50按价格进行搜索这不起作用,因为SQL正在生成如下:SELECT * FROM invoices WHERE invoice_amount LIKE "%$123%";

由于数据作为double存储在数据库中,这显然是失败的。

我的问题是,无论客户端输入什么内容,有没有办法让SQL(或者可能PHP)搜索正确的值?

2 个答案:

答案 0 :(得分:1)

我认为您所面临的问题没有任何通用解决方案,但是您可以从发票金额的开头或结尾删除特殊字符,例如 $ 等放在查询中。此外,我建议你应该以最好的方式使用PHP中的 round 以及MySQL,而不是使用LIKE语句。在这种情况下,使用LIKE语句绝对不正确。

答案 1 :(得分:0)

您可以在没有" $"

的情况下尝试查询
SELECT * FROM invoices WHERE invoice_amount LIKE "%123%";