Bài toán: Loại bỏ ký tự đặc biệt trong SQL Server, tạo function để loại bỏ ký tự đặc biệt từ một chuỗi đầu vào. Có nghĩa là chỉ giữ lại các ký tự A-Z, a-z, 0-9, space và tab; loại bỏ các ký tự còn lại (đặc biệt).
Tạo hàm: removeAllSpecialChars
--remove all special characters from inputString, refer to ascii --refer table: https://ascii.cl/ CREATE FUNCTION [kms].[removeAllSpecialChars](@inputString VARCHAR(256)) RETURNS VARCHAR(256) AS BEGIN DECLARE @specialStrings VARCHAR(256) DECLARE @increment INT = 1 WHILE @increment <= DATALENGTH(@inputString) BEGIN IF ((ASCII(SUBSTRING(@inputString, @increment, 1)) NOT BETWEEN 65 AND 90) AND (ASCII(SUBSTRING(@inputString, @increment, 1)) NOT BETWEEN 97 AND 122) AND (ASCII(SUBSTRING(@inputString, @increment, 1)) NOT BETWEEN 48 AND 57) AND (ASCII(SUBSTRING(@inputString, @increment, 1)) <> 32) AND (ASCII(SUBSTRING(@inputString, @increment, 1)) <> 9)) BEGIN SET @specialStrings = CHAR(ASCII(SUBSTRING(@inputString, @increment, 1))) SET @inputString = REPLACE(@inputString, @specialStrings, '') SET @increment=@increment-1 END; SET @increment = @increment + 1 END RETURN @inputString END
Ví dụ:
SELECT [vt].removeAllSpecialChars('HELLO azAZ09-abc ***def-test123$') as test
Kết quả:
HELLO azAZ09abc deftest123
Tham khảo: http://localhost/kienthuclaptrinh/lap-trinh-c/bang-ascii