[英]How to select true value when combining alphanumeric?
mysql: customer_number = int
(无法更改)
$query = "SELECT * FROM clients WHERE customer_number= '123F'"
结果应该为空。
查询的结果是不正确的,因为MySQL忽略了构成整数数据类型值的任何字母字符,例如'F'
您可以检查所提供的值是否严格为整数。
$query = "SELECT * FROM clients WHERE customer_number= '123F'
AND '123F' REGEXP '^-?[0-9]+$'";
AND
必须同时满足两个条件。
因此,即使MySQL忽略了123F
F
并将其视为123
,第二个条件也将返回FALSE
并且123F
将使严格整数条件的正则表达式失败。
结果如下:
123
>通过
123F
>失败
您可以将customer_number
为字符串:
SELECT *
FROM clients
WHERE CAST(customer_number as CHAR(50)) = '123F'
上面的查询当然不是SARGable的。 考虑在构造查询之前在客户端处理比较参数。
或首先检查字符串中的整数是否等于字符串(将字符串更改为您的字段名):
SELECT * FROM clients
WHERE
'123F'+0 = '123F'
AND
customer_number= '123F';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.