编码不一致问题-Illegal mix of collations
在解决bug时候碰到一个Illegal mix of collations问题,这个因为编码不一致到导致的错误。错误发生率较为高。经常发生在时间的比较上面。较为常见的一劳永逸的办法,是更改数据库的编码,使其一致性。这个也是推荐值较高的方法。
但是i现实的问题,是数据表往往已经存了大量的数据,更改数据编码将带来很多无法预知的错误。所以只能在程序里面强制做一次类型转换,来解决问题。其实就是这么个思想,思想都是一样,既然提示编码不一致,那就使其数据编码一致,从而进行比较。
在遇到的这个bug中,就是因为时间所谓的编码不一致导致,为了避免更改数据表,直接修改程序代码。加入CAST函数进行强制转换。用convert函数效果是一样的。
CAST跟convert函数相比更具ANSI标准的功能,使用CAST的函数能更容易的被其它数据库软件使用,但功能相对弱一些。不过,当小数转化为数值,并保留原始表达式中的小数数值时,仍然需要使用CAST。因此建议首先使用CAST,如果遇到必须使用CONVERT的情况时再使用CONVERT。
但是i现实的问题,是数据表往往已经存了大量的数据,更改数据编码将带来很多无法预知的错误。所以只能在程序里面强制做一次类型转换,来解决问题。其实就是这么个思想,思想都是一样,既然提示编码不一致,那就使其数据编码一致,从而进行比较。
在遇到的这个bug中,就是因为时间所谓的编码不一致导致,为了避免更改数据表,直接修改程序代码。加入CAST函数进行强制转换。用convert函数效果是一样的。
CAST跟convert函数相比更具ANSI标准的功能,使用CAST的函数能更容易的被其它数据库软件使用,但功能相对弱一些。不过,当小数转化为数值,并保留原始表达式中的小数数值时,仍然需要使用CAST。因此建议首先使用CAST,如果遇到必须使用CONVERT的情况时再使用CONVERT。
版权声明:本文为博主原创文章,未经博主允许不得转载。