SQL Server 2005功能异常
以下代码:SQL Server 2005功能异常,sql,sql-server,Sql,Sql Server,以下代码: if (right(@eqlist,2) = ', ') set @eqlist = left(@eqlist,len(@eqlist)-2) 在生产服务器上生成的结果(使用相同的数据)与在开发服务器上生成的结果不同 问题是LEN函数“应该”在计算字符串长度之前修剪尾部空格,但在我的开发服务器上似乎没有这样做 在我的开发服务器上,它可以很好地工作,并从字符串中去掉尾随的“,”,但在生产服务器上,它去掉了一个额外的字符。显然,将“-2”更改为“-1”可以修复生产服务器的问题,但随
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)
检查两台服务器、数据库和表上的字符集和排序规则设置。差异可能导致一个被修剪,另一个未被修剪。检查两台服务器、数据库和表上的字符集和排序规则设置。差异可能导致一个被修剪,另一个未被修剪。创建表格时,您是否检查了ANSI_PADDING的值?如果没有关于您的问题的详细信息,我无法确定,但是如果您反对使用VARCHAR列的表,这可能会导致它的行为不同。您在创建表时是否检查了ANSI_PADDING的值?如果没有关于您的问题的详细信息,我无法确定,但是如果您反对使用VARCHAR列的表,这可能会导致它的行为不同。我的猜测:您的两台服务器具有不同的字符集/排序规则设置。@eqlist的定义是什么?varchar?我猜:您的两台服务器具有不同的字符集/排序规则设置。@eqlist的定义是什么?瓦查尔?