以下代码:
if (right(@eqlist,2) = ', ')
set @eqlist = left(@eqlist,len(@eqlist)-2)
在我的生产服务器上产生与在我的开发服务器上不同的结果(使用相同的数据)。
问题是LEN函数'假设'在计算字符串长度之前修剪尾随空格,但在我的开发服务器上似乎没有这样做。
在我的开发服务器上,它工作正常并从字符串中剥离尾随','但在生产服务器上,它剥离了一个额外的字符。显然,将“-2”更改为“-1”可以解决生产服务器的问题,但会将其分解为开发服务器。
我重写了代码,以便它在两台服务器上都能保持一致,但我仍然想知道为什么LEN函数在每台服务器上的行为都不同。
重写的代码:
if (right(@eqlist,2) = ', ')
set @eqlist = left(rtrim(@eqlist),len(rtrim(@eqlist))-1)
答案 0 :(得分:1)
创建表格时是否检查过ANSI_PADDING的值?如果没有关于你的问题的完整细节,我不能肯定地说,但如果你反对使用VARCHAR列的表,这可能会导致它采取不同的行为。
答案 1 :(得分:0)
检查两个服务器,数据库和表格上的字符集和排序规则设置。差异可能导致一个被修剪而另一个没有。