ถ้าใน MS SQL ก้อมีฟังก์ชั่น REPLACE ให้ใช้เหมือนกัน ในกรณีกรองคำหยาบคงต้องเอา CURSOR มาวนลูปเอาค่ะ
Code (C#)
CREATE TABLE #001
(
[id] [int] IDENTITY(1,1) NOT NULL,
[base_word] [nvarchar](50) NULL,
[replace_word] [nvarchar](50) NULL
) ;
GO
INSERT INTO #001 ([base_word] , [replace_word] ) VALUES
(N'หยาบ' ,N'ละเอียด') ,
(N'หยาบมาก' ,N'ละเอียดมาก') ,
(N'หยาบมั่กๆ' ,N'ละเอียดมั่กๆ') ;
GO
DECLARE MYFILTER_CURSOR CURSOR FOR
SELECT [base_word] ,[replace_word]
FROM #001 ORDER BY [base_word] ;
DECLARE @BASE_WORD_KEEPER NVARCHAR(MAX);
DECLARE @REPLACE_WORD_KEEPER NVARCHAR(MAX);
DECLARE @INPUT_TEXT NVARCHAR(MAX);
DECLARE @OUTPUT_TEXT NVARCHAR(MAX);
SET @INPUT_TEXT = N'เมิงจะไปเที่ยวกะไปเดะกุมะไปง่วงว้อย สาดดดดดดดดดดดดด' ;
SET @OUTPUT_TEXT = @INPUT_TEXT ;
OPEN MYFILTER_CURSOR ;
FETCH NEXT FROM MYFILTER_CURSOR
INTO @BASE_WORD_KEEPER ,@REPLACE_WORD_KEEPER;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @OUTPUT_TEXT = REPLACE ( @OUTPUT_TEXT ,@BASE_WORD_KEEPER ,@REPLACE_WORD_KEEPER );
FETCH NEXT FROM MYFILTER_CURSOR
INTO @BASE_WORD_KEEPER ,@REPLACE_WORD_KEEPER;
END
CLOSE MYFILTER_CURSOR ;
DEALLOCATE MYFILTER_CURSOR ;
GO
DROP TABLE #001;
GO