原文:
SQL SERVER CHAR ( integer_expression )各版本返回值差异的案例
我们都知道CHAR(integer_expression)将ASCII代码转换为字符。当integer_expression介于 0 和 255 之间的整数。如果该整数表达式不在此范围内,将返回 NULL 值。这些都是官方资料介绍的。具体参考https://msdn.microsoft.com/zh-cn/library/ms187323(v=sql.120).aspx
但是在我们最近的一次SQL SERVER 2005 迁移升级到SQL SERVER 2014的过程中发现了一些问题,发现官方文档对这个函数的介绍描述有一些谬误。如下所示,在SQL SERVER 2000 和SQL SERVER 2005中CHAR(129)到CHAR(254)都返回了?。 但是从SQL SERVER 2008以后到SQL SERVER 2014,CHAR(129)到CHAR(254)都返回NULL值。并不是官方文档所说的参数不在1~255内才返回NULL值。这些必须注意,以免开发人员有些特殊的SQL用法在升级后出现错误。
SQL SERVER 2000
SQL SERVER 2005
SQL SERVER 2008R2
SQL SERVER 2014