Разбор SQL Server String для специальных символов - PullRequest
1 голос
/ 26 января 2010

Мне нужно решение (функция / процедура t-sql) для анализа SQL Server varchar (max) и исключения всех специальных символов и акцентов

Вывод этой строки будет преобразован в файл CSV с использованием сценария AWK, который разбивает специальные символы, такие как '&', '%', '\', и все символы ударения, которые при преобразовании превращаются в неизвестные символы (например, ç в français), поэтому вот почему мне нужен этот парсер.

Спасибо

Ответы [ 2 ]

2 голосов
/ 26 января 2010

Вы можете попробовать это:

CREATE TABLE dbo.Bad_ASCII_Characters (ascii_char CHAR(1) NOT NULL)

DECLARE @i INT
SET @i = 1
WHILE @i <= 255
BEGIN
    IF  (@i <> 32) AND
        (@i NOT BETWEEN 48 AND 57) AND
        (@i NOT BETWEEN 65 AND 90) AND
        (@i NOT BETWEEN 97 AND 122)
    BEGIN
        INSERT INTO dbo.Bad_ASCII_Characters (ascii_char) VALUES(CHAR(@i))
    END

    SET @i = @i + 1
END

DECLARE @row_count INT
SET @row_count = 1

WHILE (@row_count > 0)
BEGIN
     UPDATE T
     SET my_column = REPLACE(my_column, ascii_char, '')
     FROM My_Table T
     INNER JOIN dbo.Bad_ASCII_Characters BAC ON
          T.my_column LIKE '%' + BAC.ascii_char + '%'

     SET @row_count = @@ROWCOUNT
END

Я не проверял, так что, возможно, вам придется немного его настроить. Вы можете генерировать таблицу «на лету» каждый раз или оставить ее там, и если ваши требования немного изменятся (например, вы обнаружите, что некоторые символы будут правильно обрабатываться), тогда вы можете просто изменить данные в таблице.

Цикл WHILE вокруг обновления выполняется в случае, если некоторые столбцы содержат несколько специальных символов. Если ваша таблица очень большая, вы можете увидеть здесь некоторые проблемы с производительностью.

0 голосов
/ 26 января 2010

Если я вас правильно понял:

SELECT REPLACE('abc&de','&','_')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...