2014-09-22 60 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

回答