sql 查询错误

sql查询不准确,根据条件会查询其他的数据

你的MPI字段不是init吧

非init字段的值都需要用‘’引起来,按常规你的那个sql应该报错的,tidb 可能没有识别到就显示了所有数据
字段为init的换 MPI = 0是可以的;但是MPI非init类型,就需要 MPI=‘0’

正常的,不会报错,mysql也一样,最好把字符串类型用引号括起来

这个问题就是看cast是怎么实现的,在你这个sql的执行计划中,MPI会被隐式转换,而第一位不是0到9就取0,所以查出来的大多都是字母开头的。具体可以看:

不会报错,但这的确有问题,应该不会返回数据

但它的结果是有问题的呀

没问题,字符串转整型,第一个字符非数字转换后就是0。
你可以测试下看看
select CONVERT('abcd',SIGNED);
select CONVERT('2bcd',SIGNED);

1 个赞

好的,测试了

MPI不是整形啊,你加单引号。

是不是想找mpi列是空的行?改查询条件为mpi is null试试呢?

mysql 也有同样的问题,字符串从左到右进行遍历,如果最左位是正负号或者数字则继续,否则就是空,赋值0

其实楼主加’'号就好了

丫的 , 我去试下 确实 , 还是按照类型查询 , 一般varchar 类型不可能 传个int 吧

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。