首頁 > 後端開發 > php教程 > mysql查询结果不正确的问题

mysql查询结果不正确的问题

WBOY
發布: 2016-07-06 13:51:35
原創
1117 人瀏覽過

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转换为数字。
加了单引号类型匹配,直接使用索引扫描(如果列上有索引)。
所以不加引号还会导致性能问题。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板