mysql的tinyint字段类型判断的疑惑

今天在写SQL语句是,where条件中使用了一个tinyint类型的字段做判断,自己没有留意写错了判断值,神奇的是竟然能查到数据
以下是表和对应的SQL语句
CREATE TABLE `test` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `type` tinyint(4) NOT NULL COMMENT '类型',
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT '名称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `test`(`id`, `type`, `name`) VALUES (1, 0, '名称0');
INSERT INTO `test`(`id`, `type`, `name`) VALUES (2, 1, '名称1');
INSERT INTO `test`(`id`, `type`, `name`) VALUES (3, 2, '名称2');
INSERT INTO `test`(`id`, `type`, `name`) VALUES (4, 0, '名称4');
执行下面的两条SQL语句,得到的结果竟然是一样的
select * from test where type = 'type ';
select * from test where type = 0;
idtypename
10名称0
40名称4
在网上找了没有看到类似的问题,请教各位,这是什么原因呢?

MySQL在数字上下文中静默地将字符串转换为数字。
通过将前导数字字符转换为数字来实现。如果没有数字,则值为0.
因此,这相当于‘type' = 0,因为type 第一位为字母,没有数据,假设你的SQL是
select * from test where type = '1type';
那么结果为:2 1 名称1