MySQL:使用字符串参数搜索数字列

时间:2013-04-22 17:53:49

标签: mysql

假设我们在表'order'中有一条id = 1的记录。这个查询:

SELECT * FROM 'orders' WHERE id = 'abc1'

不会返回提到的记录。但是这个查询:

SELECT * FROM 'orders' WHERE id = '1abc'

将返回id = 1的记录。这是因为当MySQL将字符串转换为数字'abc1'变为0,但'1abc'变为1.有一种很好的方法可以使MySQL严格搜索具有来自查询的id的记录,即不返回id = 1的记录提到的案例?

2 个答案:

答案 0 :(得分:6)

如何使用:

SELECT * FROM 'orders' WHERE id LIKE '1abc' COLLATE utf8_bin

甚至

SELECT * FROM 'orders' WHERE STRCMP(id, '1abc') = 0;

答案 1 :(得分:0)

我在提交SQL查询之前使用PHP处理了

$idTest = '1abc';
if (is_numeric($id){
    $query = "SELECT * FROM 'orders' WHERE id = '$idTest'"
}

如果$idTest有字符串,则会阻止提交查询