在MS-SQL服务器中,XSLT的normalize-space()相当于什么?

时间:2011-12-08 06:57:45

标签: sql-server sql-server-2008 tsql

在MS-SQL服务器中,什么等同于normalize-space()的XSLT? 如果没有内置函数,那么如何在SQL查询中实现这个功能?

1 个答案:

答案 0 :(得分:0)

我知道没有内置功能。自己构建一个可能看起来像这样。

create function NormalizeSpace(@S nvarchar(max)) returns nvarchar(max)
as
begin
  set @S = replace(@S, nchar(9), N' ')
  set @S = replace(@S, nchar(10), N' ')
  set @S = replace(@S, nchar(13), N' ')

  while charindex(N'  ', @S) > 0
  begin
    set @S = replace(@S, N'  ', N' ')
  end  
  return rtrim(ltrim(@S))
end

<强>更新

Jeff Moden查看本文,以便更快地完成此操作(无需循环): REPLACE Multiple Spaces with One

create function NormalizeSpace(@S nvarchar(max)) returns nvarchar(max)
as
begin
  set @S = replace(@S, nchar(9), N' ')
  set @S = replace(@S, nchar(10), N' ')
  set @S = replace(@S, nchar(13), N' ')

  set @S = replace(@S, N'  ', N' '+nchar(7))
  set @S = replace(@S, nchar(7)+N' ', N'')
  set @S = replace(@S, nchar(7), N'')

  return rtrim(ltrim(@S))
end