繁体   English   中英

结合字母数字时如何选择真实值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM