MySQL:Search-Term应该考虑float的逗号和逗号

时间:2015-09-02 07:13:53

标签: mysql sql

我想改进我的SQL搜索。当前查询如下所示:

$query->where('(a.id LIKE ' . $search . ' OR a.invoiceid LIKE ' . 
$search . ' OR c.lastname LIKE ' . $search . ' OR c.firstname LIKE ' . 
$search .  ' OR c.company LIKE ' . $search . ' OR a.creationdate LIKE ' . 
$search . ' OR a.duedate LIKE ' . $search .  ' OR a.totalsum LIKE ' . 
$search . ')');

这已经很有用了: - )

但如果我输入1,23而不是1.23并获得保存的浮点数(totalsum)的结果会更好。

日期字段保存为DATETIME。如果在22.09.1980等搜索中使用其他日期格式获得结果并获得1980-09-22 00:00:00的点击量,那就太棒了。

1 个答案:

答案 0 :(得分:1)

您可以使用替换功能作为逗号:

'a.totalsum LIKE REPLACE(' . $search . ", ',', '.')"

但是对于日期来说任务更复杂,因为您需要识别模式。 MySQL有一个library来支持正则表达式替换。但我建议你使用PHP:

//replace dd.mm.yyyy -> yyyy-mm-dd
$search = preg_replace('/^(\d{2})\.(\d{2})\.(\d{4})$/', '$3-$2-$1', $search);