首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合字母数字时如何选择真值?

问组合字母数字时如何选择真值?
EN

Stack Overflow用户
提问于 2019-03-08 15:11:31
回答 3查看 73关注 0票数 0

mysql:customer_number = int (不可更改)

代码语言:javascript
复制
$query = "SELECT * FROM clients WHERE customer_number= '123F'" 

结果应该为空。

查询的结果不正确,因为MySQL忽略了构成整型数据类型的值的任何字母字符,例如‘F’

EN

回答 3

Stack Overflow用户

发布于 2019-03-08 15:26:12

您可以检查提供的值是否为严格整数。

代码语言:javascript
复制
$query = "SELECT * FROM clients WHERE customer_number= '123F' 
AND '123F' REGEXP '^-?[0-9]+$'";

AND必须同时满足这两个条件。

因此,即使MySQL忽略来自123F的F并将其视为123,第二个条件也将返回FALSE,并且123F将无法执行严格整数条件的正则表达式。

这将产生以下结果:

123 ->通行证

123F ->失败

票数 2
EN

Stack Overflow用户

发布于 2019-03-08 15:23:34

您可以将customer_number转换为string:

代码语言:javascript
复制
SELECT *
FROM clients
WHERE CAST(customer_number as CHAR(50)) = '123F'

上面的查询当然不是SARGable。考虑在构造查询之前在客户端处理比较参数。

票数 0
EN

Stack Overflow用户

发布于 2019-03-08 15:47:24

或者,如果字符串中的整数等于字符串(将字符串更改为您的字段名),则选中作为第一个条件:

代码语言:javascript
复制
SELECT * FROM clients 
WHERE
  '123F'+0 = '123F' 
AND
  customer_number= '123F';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55058389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档