[英]SQL code to find and suppress numbers and special characters
我想在我的 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
這是一個盲目的鏡頭,因為您沒有指定您的 RDBMS。 但假設您的[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、循環、計數列表等提供大量答案之前,請提供更多詳細信息。
您可能會閱讀此答案,其中我提供了 function 來分別處理每個字符。 您可以根據自己的需要進行調整。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.