select语句中临时变量@i与decimal为什么没有隐式转换,报not *types.MyDecimal

TiDB中的@i是用户自定义变量,而不是临时表。在TiDB中,用户自定义变量的类型是字符串类型,因此在使用用户自定义变量时,需要进行类型转换。decimal类型是一种高精度的数字类型,而字符串类型无法隐式转换为decimal类型,因此需要使用CAST函数进行显式转换。例如:

SET @i = '123.45';
SELECT CAST(@i AS DECIMAL(5,2));

这里将字符串类型的@i转换为DECIMAL(5,2)类型。如果不进行类型转换,就会出现报错信息中提到的“not *types.MyDecimal”错误。