查询:
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'不是。
我在这个查询中哪里出错了?
答案 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'