查询sql问题,

【 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’



这个是表结构。

不通的条件查询出来了相同结果
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

没看懂啥意思,同样的sql查询出来相同的数据,这不是符合预期吗 :grinning:

应该说的是不同的sql查出来相同结果了,上面的sql decimal类型传的是一个字符串

image
在mysql也是一样的哦

结果中的org_pid字段也相同,是什么?

1 个赞

org_pid是数字型的,带‘OTM3NDA=’ 查询不报错吗

或者是表结构没有粘对

没明白,把表结构,测试数据都贴出来,试试

org_pid换一个数据类型比较合适

字符串转换成decimal不报错吗?

隐式转换啊

看警告信息啊

当一个字符串与一个数字进行比较时,字符串会被转换为一个数字。转换是基于字符串的数值前缀。如果字符串没有数值前缀,则转换结果为 0。

1 个赞

会隐式转换

org_pid是decimal类型,你传值是字符串,隐式转换了

可能隐式转换了

隐式转换

上面的sql条件不一样

应该是自动隐式转换了,你可以看下是否有警告信息
类似这种
image

:thinking:这种的是不是也是由sql_mode控制的?如果是严格模式,会直接报错?

1 个赞