Error number: 3988; Symbol: ER_IMPOSSIBLE_STRING_CONVERSION; SQLSTATE: HY000
Message: Conversion from collation %s into %s impossible for %s
ER_IMPOSSIBLE_STRING_CONVERSION(Error number: 3988)是由MySQL报出的一个错误信息,MySQL报出有SQLSTATE ‘HY000’,表明MySQL在将一个字符串变换为其他的数据类型的过程中发生了错误。
该错误信息也有民间给出的另外一个名字“字符串不可转换错误”,应该说着错误的发生基本上是因为使用者出现了自身的错误。一般来讲,该错误可能都可以归结到用户自身编写的SQL语句上去,并且它拒绝用户转换字符串变成不正确的数据类型。
常见案例
一个常见的案例就是当用户试图将一个字符串类型的变量转换为数字类型,如果字符串没有任何数字,则在尝试转换失败时就会报出这个错误:
SELECT Cast(‘sdfs’ as INT);
上面这一段SQL尝试将字符串’sdfs’转换为数字类型,但因为字符串里没有任何数字,MySQL就会报出这个错误:
ERROR 3988 (HY000): Impossible string conversion.
解决办法
解决办法通常有多种,这取决于用户需求。比如在上面案例中,用户可以到字符串中检查是否有存在任何数字,如果有的话,可以如下处理:
SELECT Cast(REPLACE (‘sdfs’, ‘0’, ”) as INT);
这样就能够成功的将字符串转换为数字类型了,如果字符串中没有任何数字,那么就不能够进行该类型的转换,需要用户使用其他的方式处理。