Sql server MS-SQL server中XSLT的normalize-space()等效于什么?

Sql server MS-SQL server中XSLT的normalize-space()等效于什么?,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,MS-SQL server中XSLT的等价物是什么? 如果没有内置函数,那么如何在SQL查询中实现此函数?据我所知,没有内置函数。自己建造一个可能是这样的 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 = re

MS-SQL server中XSLT的等价物是什么?

如果没有内置函数,那么如何在SQL查询中实现此函数?

据我所知,没有内置函数。自己建造一个可能是这样的

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
更新:

请阅读本文,以获得一种更快的方法(无while循环):

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