>백엔드 개발 >PHP 튜토리얼 >mysql查询结果不正确的问题

mysql查询结果不正确的问题

WBOY
WBOY원래의
2016-07-06 13:51:351111검색

mysql查询结果不正确的问题

我大多的订单查询都按第一条sql语句查询的方式进行查询,查询订单结果都是唯一;但是到了这个订单,就出现了两条查询结果,这是什么原因?正常情况下,字段属性为字符串的,数值不是加不加引号都是一样的吗? 请大侠指点

用第一条sql语句查询出来的结果
mysql查询结果不正确的问题

回复内容:

mysql查询结果不正确的问题

我大多的订单查询都按第一条sql语句查询的方式进行查询,查询订单结果都是唯一;但是到了这个订单,就出现了两条查询结果,这是什么原因?正常情况下,字段属性为字符串的,数值不是加不加引号都是一样的吗? 请大侠指点

用第一条sql语句查询出来的结果
mysql查询结果不正确的问题

当然不一样,mysql会进行隐式类型转换,当比较数字和varchar时,mysql会把varchar转换为数字,假如 password 类型为字符串,查询条件为 int 0 则会匹配上,通过show warnings;查看

把你查询的结果贴出来看看,我也很好奇啊

你的varchar是多少位的 是不是长度不够 后面的引号被自动忽略了?

out_trade_no 确定都是 数字字符,是吧? 可能是 数值太大,在进行隐式类型转换的时候,被截取了一部分,造成 匹配时 ,数据多了一条,提醒你 ,在写SQL 要注意的事项,字符串 数据类型该加 引号的就加,免得不必要的漏洞出现

应该是varchar转数字截断了。
不加引号会导致mysql先全表查询扫描,然后把查询到的结果一条条varchar转换为数字。
加了单引号类型匹配,直接使用索引扫描(如果列上有索引)。
所以不加引号还会导致性能问题。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.