2014-09-22 62 views
2

今天我在一个搜索查询中发现问题,找不到简单的解决方案。mySQL:不想在搜索查询中转换为整数

我们查询:

SELECT 
    invoice_id, firstname, lastname 
FROM 
    table 
WHERE 
    email = '[email protected]' OR 
    firstname = '[email protected]' OR 
    lastname = '[email protected]' OR 
    invoice_id = '[email protected]' 

这里的问题是,我们通过invoice_id搜索 - INT(10)UNSIGNED。

Mysql的自动转换[email protected]整数:24个显示结果与INVOICE_ID行= 24

,我发现的唯一的解决办法是检查的数量或在此之前发送到SQL查询,如果是不是要执行另一个不包含invoice_id的查询。

这是例子查询,真正的查询已经3本INVOICE_ID JOIN的

它很惊讶地看到结果:当执行这个查询第一次:

SELECT invoice_id FROM table WHERE invoice_id = '[email protected]' 

我没以前不知道这个演员,因为通常不会搜索整数列中的蜇伤,然后我在谷歌中读到这个。

+0

我不知道。我的第一个想法是投入'invoice_id',所以'WHERE CAST(invoice_id as VARCHAR)='24aaa @ aaa.aa''。但即使这种方式有效,对于使用索引进行查询的性能可能也不好。但你可以测试它。也许这是一个解决方案。 – GolezTrol 2014-09-22 12:33:20

回答