代码之家  ›  专栏  ›  技术社区  ›  Jeff

SQL Server 2005 LEN函数异常

  •  1
  • Jeff  · 技术社区  · 17 年前

    if (right(@eqlist,2) = ', ')
      set @eqlist = left(@eqlist,len(@eqlist)-2)
    

    在我的生产服务器上与在我的开发服务器上产生不同的结果(使用相同的数据)。

    问题是,LEN函数“应该”在计算字符串长度之前修剪尾部空格,但在我的开发服务器上似乎没有这样做。

    在我的开发服务器上,它工作正常,可以从字符串中删除尾随的“,”,但在生产服务器上,却删除了一个额外的字符。显然,将“-2”更改为“-1”可以解决生产服务器的问题,但会破坏开发服务器的问题。

    重写的代码:

    if (right(@eqlist,2) = ', ')
      set @eqlist = left(rtrim(@eqlist),len(rtrim(@eqlist))-1)
    
    2 回复  |  直到 17 年前
        1
  •  1
  •   Tom H zenazn    17 年前

        2
  •  0
  •   achinda99    17 年前

    检查两台服务器、数据库和表上的字符集和排序规则设置。差异可能导致一个被修剪,另一个没有。