代码改变世界

SQL SERVER CHAR ( integer_expression )各版本返回值差异的案例

2016-01-03 10:45  潇湘隐者  阅读(968)  评论(0编辑  收藏  举报

  我们都知道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

clipboard

 

SQL SERVER 2005

clipboard[1]

 

SQL SERVER 2008R2

clipboard[2]

 

SQL SERVER 2014

clipboard[3]