社区
MySQL
帖子详情
mysql以数字开头的字符串字段,查询条件字段值等于特定数字时,为何查询结果为以数字开头的数据
weixin_41097949
2018-07-18 04:24:09
如有一表test:id, type;
数据如下:
1,3a;
2,3b;
3, 5s;
select * from test where type = 3;
得到的结果为:请问这是为什么?
1,3a;
2,3b;
...全文
851
7
打赏
收藏
mysql以数字开头的字符串字段,查询条件字段值等于特定数字时,为何查询结果为以数字开头的数据
如有一表test:id, type; 数据如下: 1,3a; 2,3b; 3, 5s; select * from test where type = 3; 得到的结果为:请问这是为什么? 1,3a; 2,3b;
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Rotel-刘志东
2018-07-19
打赏
举报
回复
数据类型不一样一定是做转换的,否则不同的类型怎么去对比比较。要把你的type类型转化为数字类型的。
zjcxc
2018-07-19
打赏
举报
回复
type=3
这两个的数据类型不一样,所以会转换为一样一类型再做比较,按照 mysql 的转换规则,会把 type 转成数字,而 3a,3b,3c 转成数字的结果就是 3,所以=3
你可以直接验证一下: select cast('3a' as signed);
同时,查询后执行 show warnings 时会看到相关的警告信息
weixin_41097949
2018-07-19
打赏
举报
回复
#5 zjcxc,您这么解释,我算通了,非常感谢。mysql做了转换,当查询条件为“字符串字段=数字”,mysql截取前端整数数字部分转换为整数型,再与给出的条件值比较。但mysql的这个规则不知是好还是不好。比如例中,按正常思维希望客户输入“3c”时才能看到“3c”这条记录,但客户输入3时,把“3a,3b,3c"都列出来了。
weixin_41097949
2018-07-18
打赏
举报
回复
二楼,您用 select * from test where type=3; 查询得出的结果是不是:
id type
1 3a
2 3b
3 3c
weixin_41097949
2018-07-18
打赏
举报
回复
感谢二位的热情解答,我的type是varchar型的,二楼您写的查询我能理解,我不能理解的是:我写的这个查询语句看起来应该是错误的,会报语法错误,或者查询结果为空,可结果是没有料想到的
iamboy_11
2018-07-18
打赏
举报
回复
根据你发的问题,我觉得应该这样写:
select * from test where type like '4%' 或者 select * from test where left(type,1) = 4
luyaran
2018-07-18
打赏
举报
回复
你的type的字段类型是什么啊?????
MySQL
数据
类型和运算符
Re:
MySQL
数据
类型和运算符=============================#
数据
类型 整数类型:五种 TINY SMALL MEDIUM INT BIG 浮点和定点小数类型:三种 FLOAT DOUBLE DECIMAL 日期与
时
间
数据
类型:五种 YEAR -1
字符串
类型:二种 CHAR(M) VARCHAR(M) -1 二进制
字符串
:位
字段
BIT 固定BINARY 可变VARBINARY -1 # 运算符 算术 运算符 比较 运算符 逻辑 运算符 位操作 运算符 运算符的优先级-------------------------------------
mysql
查询
字符串
类型的
字段
使用
数字
类型
查询
时
问题
若
字符串
是以
数字
开头
,且全部都是
数字
,则转换为
数字
结果是整个
字符串
; 部分是
数字
,则转换为
数字
结果是截止到第一个不是
数字
的字符为止。 理解: varchar str = “1111aaaa”,转换为
数字
是1111。 若
字符串
不是以...
mysql
使用
数字
字符串
查询
字符串
类型
字段
查询
结果不正确的问题
mysql
使用
数字
字符串
查询
字符串
类型
字段
查询
结果不正确的问题
mysql
在查
字符串
字段
中
条件
参数传为
数字
0查到与实际
数据
不匹配问题
用
数字
查
字符串
会把
字符串
数据
转化为
数字
开头
,所有非
数字
开头
字符串
都是以0
开头
。本来要写的是select
字段
from t where b=0。工作中本来要
查询
一个只有0和1的
数据
(
字段
b)sql
条件
为0为什么查出来不为0的
数据
?
MySql
,以
数字
0作为
查询
条件
,
查询
字符串
字段
。如 select * from user where str=0;会查到str为‘0‘,‘0abc‘,‘abc‘等
数据
等问题。
如果你查一个varchar的
字段
,
条件
是
数字
的话,会把
字符串
数据
转化为
数字
开头
,所有非
数字
开头
字符串
都是以0
开头
。varchar的
值
就会截取非
数字
之前的
数字
作为
查询
结果。
字符串
abc 转化为 0abc。123abc 截取为 123 ...
MySQL
56,687
社区成员
56,710
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章