mySQL:不希望在搜索查询中强制转换为整数

时间:2014-09-22 10:24:40

标签: mysql search casting integer

今天我在一个搜索查询中发现问题,我找不到简单的解决方案。

我们有查询:

SELECT 
   invoice_id, firstname, lastname 
FROM 
   table 
WHERE 
   email = '24assets@example.com' OR 
   firstname = '24assets@example.com' OR 
   lastname = '24assets@example.com' OR 
   invoice_id = '24assets@example.com'

这里的问题是我们按invoice_id搜索 - int(10)UNSIGNED。

Mysql自动将24assets@example.com转换为整数:24并显示具有invoice_id = 24的行的结果

我找到的唯一解决方案是在发送到SQL查询之前检查是否为数字,如果不是数字则执行另一个不包含invoice_id的查询。

这是示例查询,真实查询通过此invoice_id

有3个JOIN

第一次执行此查询时,看到结果非常惊讶: 24

SELECT invoice_id FROM table WHERE invoice_id = '24aaa@aaa.aa'

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

1 个答案:

答案 0 :(得分:0)

我认为这会有效,但我认为在你的代码中处理它(php我假设?)会更清楚。

复杂的解决方法:

SELECT 
   invoice_id, firstname, lastname 
FROM 
   table 
WHERE 
   email = '24assets@example.com' OR 
   firstname = '24assets@example.com' OR 
   lastname = '24assets@example.com' OR 
   invoice_id = concat('','24assets@example.com' * 1)