我有一个文字,例如This is a test text hello world
我有一些带有案例格式的单词列表,例如HeLLO
,WORLD
,TEST
(我有26,000个单词列表,表格格式在表格中)
我想知道如果文本中出现任何单词,如何用文本格式的单词列表替换文本中的单词。
例如,处理后的上述字符串的输出将为This is TEST text HeLLO WORLD
我知道如何检查字符串是否包含单词:
if CHARINDEX('ME',@mainString) > 0
begin
--do something
end
我也知道如何替换字符串中的单词
REPLACE(Column1,'hello','HeLLO')
如果我们在文本中列出了数千个要替换的单词,我想知道如何应用这个?
答案 0 :(得分:0)
在谷歌搜索后写下了SP:
ALTER PROCEDURE PROC_FormatText
@TXT NVARCHAR(MAX)
AS
BEGIN
SELECT @TXT =
CASE WHEN @TXT LIKE CONCAT('% ',Creator,' %')
THEN
REPLACE(@TXT, Creator, Creator)
ELSE
@TXT
END
FROM [CreatorsList];
SELECT @TXT;
END
答案 1 :(得分:0)
一个简单的解决方案(来自Here)是选择替换为变量:
<强>设置强>
Create Table Replacements
(
Initial Varchar(100) Not Null,
Replacement Varchar(100) Not Null
)
Insert into Replacements (Initial, Replacement) Values ('hello', 'HeLLO')
Insert into Replacements (Initial, Replacement) Values ('world', 'WORLD')
Insert into Replacements (Initial, Replacement) Values ('test', 'TEST')
<强>替换强>
DECLARE @Val varchar(250) = 'This is a test text hello world'
SELECT @Val = REPLACE(@Val, Initial, Replacement)
FROM Replacements
SELECT @Val --This is a TEST text HeLLO WORLD
NB: Sql替换可能不区分大小写(取决于您认为的排序规则)。如果是这种情况,则TEST,test,TeST和TEst(等)都被认为与'test'匹配。所以这些都将转换为大写的TEST