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