mysql+like+规则_Mysql Like +通配符vs等于运算符

bd96500e110b49cbb3cd949968f18be7.png

I recently just fixed a bug in some of my code and was hoping someone could explain to me why the bug occurred.

I had a query like this:

SELECT * FROM my_table WHERE my_field=13

Unexpectedly, this was returning rows where my_field was equal to either 13 or 13a. The fix was simple, I changed the query to:

SELECT * FROM my_table WHERE my_field='13'

My question is, is this supposed to be the case? I've always thought that to return a similar field, you would use something like:

SELECT * FROM my_table WHERE my_field LIKE '13%'

What is the difference between LIKE + a Wild Card vs an equals operator with no quotes?

解决方案

This statement returns rows for my_field = '13a':

SELECT * FROM my_table WHERE my_field=13

Because MySQL performs type conversion from string to number during the comparison, turning '13a' to 13. More on that in this documentation page.

Adding quotes turns the integer to a string, so MySQL only performs string comparison. Obviously, '13' cannot be equal to '13a'.

The LIKE clause always performs string comparison (unless either one of the operands is NULL, in which case the result is NULL).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值