MySQL查询仅匹配以整数开头

时间:2018-05-16 20:38:59

标签: mysql

查询:

SELECT  a.*, b.* FROM `links` a, `product` b WHERE a.title LIKE CONCAT('%',b.supplier_name,'%') AND b.supplier_name!='' AND b.supplier_name!=0 ;

仅当supplier_name以0-9开头时才会出现匹配项。例如,' 2020103'是匹配而是' U13002L1'不是。

我在这个查询中哪里出错了?

1 个答案:

答案 0 :(得分:1)

将字符类型与整数类型进行比较时,MySQL会将字符隐式转换为数字值。 MySQL有非常宽松的规则。

b.supplier_name != 0 

相当于

( b.supplier_name + 0 ) != 0

作为隐式演员行为的演示,请考虑:

SELECT '1ABC' + 0 
     , '023X' + 0 
     , 'fi5'  + 0 

要进行字符比较,请与字符串文字而不是数字文字进行比较,例如

AND b.supplier_name != '0'