SQL код для поиска и подавления чисел и специальных символов - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу включить / изменить в своем коде SQL, чтобы можно было удалить следующие символы: '&% -single quotes -ampersand -percentage

Мне нужно включить любой из этих символов в текущий РЕГ. Заранее спасибо

DECLARE @counter int;
SET @counter = 0
WHILE(@counter < (SELECT MAX(ID_COLUMN) FROM [dbo].[zzIntegriyCheckV4HistoryClient_TEMP]))

BEGIN  
    IF  EXISTS (SELECT * FROM  [dbo].[zzIntegriyCheckV4HistoryClient_TEMP] WHERE MESSAGE NOT LIKE '% must be between %')
    WHILE 1 = 1
    BEGIN

        DECLARE @RetVal varchar(50)

        SET @RetVal =  (SELECT MESSAGE = STUFF(MESSAGE, PATINDEX('%[0-9()$%&/.:!]%', MESSAGE),1, '')
        FROM [dbo].[zzIntegriyCheckV4HistoryClient_TEMP]
        WHERE ID_COLUMN = @counter)

        IF(@RetVal IS NOT NULL)       
          UPDATE [dbo].[zzIntegriyCheckV4HistoryClient_TEMP] SET MESSAGE = @RetVal WHERE ID_COLUMN = @counter
        ELSE
            break
    END

    SET @counter = @counter + 1
END

1 Ответ

0 голосов
/ 22 апреля 2020

Это слепой выстрел, поскольку вы не указали свою РСУБД. Но если предположить, что ваш [tsql] указывает на SQL -Server и у вас есть версия v2017 +, вы можете попробовать это:

- какой-то грязный ввод

DECLARE @input VARCHAR(100)='abc123(33)%&$.def,,3xyz';

- список от всех символов, от которых вы хотите избавиться

DECLARE @notWanted VARCHAR(100)='0123456789!"§$%&/()=?*+-_#''<>@€,.;:';

- промежуточный заполнитель (любой из запрещенных символов)

DECLARE @useInstead CHAR(1)='~';

- Здесь вы видите работу TRANSLATE ()

SELECT TRANSLATE(@input,@notWanted,REPLICATE(@useInstead,LEN(@notWanted)));
--> abc~~~~~~~~~~~~def~~~xyz

- Теперь вы можете использовать простую REPLACE ()

SELECT REPLACE(TRANSLATE(@input,@notWanted,REPLICATE(@useInstead,LEN(@notWanted))),@useInstead,'')
--> abcdefxyz

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

...