mysql中=0的and查询

mysql中=0的and查询,第1张

尽管看到问题年代有点久远,但我觉得有必要纠正一下:

在表结构中,username 字段类型为varchar 即字符串型,而非整数型

那么查询语句,用到username = *** 时,必须写成 username ='***' ,比如: username = '0',再比如 username = 'admin' 

而如果写成 username = 0呢? 0是一个整数型,那么

数据库中username字段的数据类型会被强制转化为整型,然后再与0进行匹配.即 admin会转化为0 (因为是a开头,而非数字开头),同理,test也会转为0,  再比如110test会转化为110,再比如 0admin会转化为0 ....

再看我的图片1的例子:

select username from t_user where username = 0-- 图片左边的结果

select username from t_user -- 图片右边的结果

再看我的图片2的例子:

select username from t_user where username =4241101

跟0比较。这种写法是连续比较(我猜的但没查到相关资料,只在测试环境试过),如select 1>=2=0  结果是1

你上面的语句可以这样看

--先做时间比较

NOW() > = DATE_ADD(MAX(creation_date),INTERVAL (SELECT code_code

FROM

ym_code_value

WHERE

code_type = "apple_interval_time"

) HOUR) --得出的比较结果 再跟0比较

比较结果= 0

是这样的,当比较数字和varchar时,mysql会把varchar转换为数字,首

字符

为数字0的,或者其他字符的都会转换为0,varchar类型

字段

=0

只能排除首字符为非零数字的

字符串


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8602286.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存