【发布时间】:2016-03-09 19:39:27
【问题描述】:
我第一次来 Stack Overflow。我需要帮助创建一个搜索特定字符串并将数据库中该列的整个值替换为另一个字符串的过程。例如,这是我需要搜索并替换为的数据:
search column: replace column:
1.'rbc inv', 1.'RBC dominion securities',
2.'rbc dom', 2.'RBC dominion securities',
3.'RBC' 3.'RBC Bank'
我收到了 Excel 格式的上述内容,并将其作为表格上传到 SQL Server,然后运行我的脚本,如下所示。有列当前有字符串 RBC Investments for Seniors 需要替换为 RBC dominion 证券(上面的第 1 号)。
我的问题是,当搜索列彼此非常相似时,replace 函数不起作用,正如您在上面看到的那样,它只替换找到的字符串,而不是数据库中的整个单元格或列值。我尝试在将列值替换为新值之前将其设置为 null 并多次失败。我有一种方法可以一次手动执行此操作,但是当我收到一个包含 300 多列的 Excel 表时,我需要查找和替换,这非常令人沮丧。任何人都可以帮忙吗?谢谢,麻烦您了。
这是我创建的脚本。
SET NOCOUNT ON;
DECLARE @searchColumnValue nvarchar(max), @replaceColumnValue nvarchar(max)
DECLARE replace_cursor CURSOR FOR
SELECT searchColumn, replaceColumn -
FROM dbo.search
OPEN replace_cursor
FETCH NEXT FROM replace_cursor
INTO @searchColumnValue , @replaceColumnValue
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE contact3
SET notes = REPLACE(notes, @searchColumnValue, @replaceColumnValue)
FETCH NEXT FROM replace_cursor
INTO @searchColumnValue , @replaceColumnValue
END
CLOSE replace_cursor
DEALLOCATE replace_cursor
【问题讨论】:
-
为什么要使用光标
-
搜索字符串是您需要在列数据中查找的一些文本吗?如果你找到它,你想用另一个搜索字符串替换那个搜索字符串还是用新字符串替换该列中的所有数据?
-
您是说您希望您的 UPDATE 替换
rbc inv但不替换rbc investments?这是唯一的问题吗? -
@Karmran:我正在使用光标在我上传的 Excel 表之间进行迭代,并循环遍历每个搜索列。我希望用新字符串替换整个列和所有列。
-
@Tab Alleman:我希望我的搜索能够查找其中可能包含“RBC inv”的任何句子。例如,“RbC Investment for Seniors 65+”和“RBC inv for Juniors”都需要替换为“RBC dominion Securities”
标签: sql sql-server sql-server-2008