Что эквивалентно normalize-space () XSLT на сервере MS-SQL? - PullRequest
2 голосов
/ 08 декабря 2011

Что эквивалентно normalize-space() XSLT на сервере MS-SQL?
Если встроенной функции нет, то как реализовать эту функцию в запросе SQL?

1 Ответ

0 голосов
/ 08 декабря 2011

Нет встроенной функции, о которой я знаю.Самостоятельное создание может выглядеть следующим образом.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...