我想在我的某个列中找到一个单词,并将其替换为一些自定义文本。我有下表:
DECLARE @Table TABLE ( [Names] VARCHAR(100) )
INSERT INTO @Table
SELECT 'This is test module for testing' UNION
SELECT 'This is test module for to fork' UNION
SELECT 'This is test module for testing mod' UNION
SELECT 'This is testing' UNION
SELECT 'This is module'
我在下面解释我的确切需要:
当用户搜索文本“test”并想要将其替换为“customtext”时,应选择以下行:
This is test module for testing
This is test module for to fork
This is test module for testing mod
在用“customtext”替换“test”(全字)之后,更新的记录应为:
This is customtext module for testing
This is customtext module for to fork
This is customtext module for testing mod
您可能已经注意到我需要在完整的单词上进行搜索而不是在部分文本上进行搜索,例如在上面的案例中包含部分文本“test”的“测试”。
解释相同要求的另一个例子:
当用户搜索“mod”并希望将其替换为“customtext”时,应选择以下行:
This is test module for testing mod
在用“customtext”替换后,更新的记录应为:
This is test module for testing customtext
由于“mod”是完整的单词,因此它被替换的单词而不是包含部分文本“mod”的单词“module”。
答案 0 :(得分:0)
使用like
:使用我自己的样本数据的某种模式。首先,您可以为要替换的单词以及要搜索的单词添加两个变量。
样本数据表:
VNAME
smp tests farms
hellocoles
hell testing str
Anvil test NSW
查询:
select vname from
vendor
where '.' + vname + '.'
LIKE '%[^a-z]test[^a-z]%'
;
结果:
VNAME
Anvil test NSW
以下是更新查询:
update vendor
set vname = replace(vname,'test','newword')
from vendor
where '.' + vname + '.'
LIKE '%[^a-z]test[^a-z]%'
;
VNAME smp测试农场 hellocoles 地狱测试str Anvil newword NSW
答案 1 :(得分:0)
UPDATE TABLE_NAME
SET Column_NameA = replace(Column_NameA, 'test', 'customtext')
WHERE (Column_NameA LIKE ('%' + ' ' + 'test' + ' ' + '%'))
答案 2 :(得分:0)
我的解决方案;
DECLARE @Find VARCHAR(50) = 'test',
@Replace VARCHAR(50) = 'customtext'
DECLARE @Table TABLE ( [Names] VARCHAR(100) )
INSERT INTO @Table
SELECT 'This is test module for testing' UNION
SELECT 'This is test module for to fork' UNION
SELECT 'This is test module for testing mod' UNION
SELECT 'This is testing' UNION
SELECT 'This is module'
SELECT *
,REPLACE(' ' + Names + ' ', ' ' + @Find + ' ', ' ' + @Replace + ' ')
FROM @Table
答案 3 :(得分:-3)
你能使用像(^ | \ s)文本($ | \ s)这样的简单正则表达式,还是我不明白这个问题?