Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server 2005功能异常_Sql_Sql Server - Fatal编程技术网

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的定义是什么?瓦查尔?