SQL Server - убрать специальные символы - PullRequest
1 голос
/ 09 июня 2011

У меня есть несколько специальных символов Юникода, таких как маркеры и квадраты в таблице.Когда я делаю выбор, я хотел бы удалить специальные символы, но все равно вернуть остальную часть текста.

Есть ли способ сделать это?

Ответы [ 3 ]

4 голосов
/ 09 июня 2011

Попробуйте использовать эту функцию.Следующий код возвращает текст, составленный только из диапазона кодов символов Unicode;в этом случае от 0x0020 (space char) до 0x007E (tilde char), а остальные опущены.Вы можете определить один или несколько диапазонов символов, чтобы расширить допустимые символы для этой функции.Список символов Unicode, включая их коды, можно найти, например, здесь .

CREATE FUNCTION dbo.CharRangeOnly (@InputText NVARCHAR(4000))
  RETURNS NVARCHAR(4000)
AS
BEGIN
  DECLARE @Index INT
  DECLARE @BufferChar INT
  DECLARE @OutputText NVARCHAR(4000)

  SET @Index = 1
  SET @OutputText = ''

  WHILE @Index < LEN(@InputText) + 1
    BEGIN
      SET @BufferChar = UNICODE(SUBSTRING(@InputText, @Index, 1))

      -- here you can specify the valid character range(s)
      IF @BufferChar BETWEEN 0x0020 AND 0x007E
        SET @OutputText = @OutputText + NCHAR(@BufferChar)

      SET @Index = @Index + 1
    END

  RETURN @OutputText
END

Вы можете использовать его следующим образом

SELECT dbo.CharRangeOnly (N'•■乕ขTeᶕst໙ ཙof  β俼 ޠ➽Unᦗic៘ode✸ᾦ')

Функция, вызываемая этим сумасшедшимсмесь символов неожиданно возвращается

'Test of Unicode'
0 голосов
/ 09 июня 2011

Это может помочь.Вы можете сделать это с помощью SQL или создать метод CLR и импортировать его в свой экземпляр SQL-сервера, чтобы принять решение.В любом случае вам понадобится какая-то скалярная функция, сравнивающая символ за символом.

ссылка

0 голосов
/ 09 июня 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...