Tsql 使用T-SQL从字符串中删除指定的字

Tsql 使用T-SQL从字符串中删除指定的字,tsql,Tsql,我试图从表中的描述字段中删除某些字符串。为此,我做了这个函数 我是SQL编程新手,希望在这方面有所改进。假设我想要有一个包含“坏单词”列表的表,我想要从字符串中删除这些单词,并在清理描述时循环遍历它们 我应该指出,这个过程需要尽可能高效,因为我要处理1500万条记录。为什么不直接使用 SQL server有一个“替换”函数,我建议使用它并替换为“”。这里有一个例子,如果你担心性能,你可以研究正则表达式,它似乎运行得更快。我担心使用vanilla replace函数会删除一个单词的某些部分,留

我试图从表中的描述字段中删除某些字符串。为此,我做了这个函数



我是SQL编程新手,希望在这方面有所改进。假设我想要有一个包含“坏单词”列表的表,我想要从字符串中删除这些单词,并在清理描述时循环遍历它们

我应该指出,这个过程需要尽可能高效,因为我要处理1500万条记录。

为什么不直接使用


SQL server有一个“替换”函数,我建议使用它并替换为“”。这里有一个例子,如果你担心性能,你可以研究正则表达式,它似乎运行得更快。我担心使用vanilla replace函数会删除一个单词的某些部分,留下一个恼人的字符串。比如,如果我替换了“Run”,它找到了“Running”,那么剩下的将是“ning”。我非常想开始使用正则表达式,但我知道您需要对数据库拥有各种特权,并在计算机上安装其他软件(visual studio?),因此目前这不是一个选项。我理解并感谢您的关注。然而,这是一个你无法完全避免的问题。真正缓解此问题的唯一方法是对每个入口进行目视检查;通过审批流程。即使使用你的技巧,你也会在句末遇到问题。如果你想检查部分单词,你也可以用前导空格和尾随空格来填充它。
CREATE FUNCTION fnDescriptionClean 
(@strDescription varchar(50))
RETURNS varchar(50)
AS
BEGIN

declare @Return varchar(50)
declare @badword varchar(50)

set @badword = 'Front'
set @strDescription = CASE 

--Remove from mid string

WHEN @strDescription LIKE '% ' + @Badword +' %'  THEN REPLACE(@strDescription,' ' +  @Badword + ' ',' ')

--Remove from start of string

WHEN @strDescription LIKE @Badword +' %' THEN RIGHT(@strDescription, (len(@strDescription)-(len(@Badword)+1)))

--Remove from end of string

WHEN @strDescription LIKE '% ' + @Badword THEN LEFT(@strDescription, (len(@strDescription)-(len(@Badword)+1)))
ELSE @strDescription END 

set @badword = 'Right'
set @strDescription = CASE 

WHEN @strDescription LIKE '% ' + @Badword +' %'  THEN REPLACE(@strDescription,' ' +  @Badword + ' ',' ')
WHEN @strDescription LIKE @Badword +' %' THEN RIGHT(@strDescription, (len(@strDescription)-(len(@Badword)+1)))
WHEN @strDescription LIKE '% ' + @Badword THEN LEFT(@strDescription, (len(@strDescription)-(len(@Badword)+1)))
ELSE @strDescription END 

RETURN      @strDescription
end
UPDATE tableName
SET columnName = REPLACE(columnName,'specific word','');