【 TiDB 使用环境】生产环境 /测试/ Poc 【 TiDB 版本】 【复现路径】 同样的sql查询出来相同的数据,在mysql没有这个情况。 select * from dst_org where org_pid=‘OTM3NDA=’ and ORG_ENABLE=‘1’ select * from dst_org where org_pid=0 and ORG_ENABLE=‘1’
没看懂啥意思,同样的sql查询出来相同的数据,这不是符合预期吗
应该说的是不同的sql查出来相同结果了,上面的sql decimal类型传的是一个字符串
在mysql也是一样的哦
结果中的org_pid字段也相同,是什么?
org_pid是数字型的,带‘OTM3NDA=’ 查询不报错吗
或者是表结构没有粘对
没明白,把表结构,测试数据都贴出来,试试
org_pid换一个数据类型比较合适
字符串转换成decimal不报错吗?
隐式转换啊
看警告信息啊
当一个字符串与一个数字进行比较时,字符串会被转换为一个数字。转换是基于字符串的数值前缀。如果字符串没有数值前缀,则转换结果为 0。
会隐式转换
org_pid是decimal类型,你传值是字符串,隐式转换了
可能隐式转换了
隐式转换
上面的sql条件不一样
应该是自动隐式转换了,你可以看下是否有警告信息 类似这种
这种的是不是也是由sql_mode控制的?如果是严格模式,会直接报错?