在更新语句中使用替换

using replace in an update statement

我猜我有一个愚蠢的问题,但我似乎无法让我的更新语句起作用。 我有以下查询。

SELECT REPLACE(CAST(Text_col AS NVARCHAR(250)),'Vegetable oils','Refined Vegetable oils')AS 'DESCRIPTION', Text_col as 'ORIGINAL'
FROM Table1 
where  doc_id in (SELECT DOC_ID
FROM Table1
where Text_col like '%Vegetable oils%')
and FUNCTION_CODE = 'INGREDIENT'

这个 Returns 我 table 有两列。它有 200 多行。 DESCRIPTION 列包含包含更新文本的 TEXT 字段,而 ORIGINAL 包含原始文本,因此我可以并排查看所有更改。我对它的外观很满意,所以我尝试了以下查询来更新故事以实现更改。

begin transaction
UPDATE Table1 
Set Text_col = REPLACE(CAST(Text_col AS NVARCHAR(MAX)),'Vegetable oils','Refined Vegetable oils')
WHERE  doc_id in(SELECT DOC_ID
FROM Table1
WHERE Text_col like '%Vegetable oils%')
and function_code = 'INGREDIENT DEC

查询运行无误,但更新了 0 行。对于我的生活,我无法发现为什么它不会更新上面 SELECT 语句中出现的 200 多行。

我 运行 在 SQL 2012 Management studio 上,如果这很重要的话。

谢谢

很确定您的整个更新可以简化为这个。

UPDATE Table1 
Set Text_col = REPLACE(CAST(Text_col AS NVARCHAR(MAX)),'Vegetable oils','Refined Vegetable oils')
where FUNCTION_CODE = 'INGREDIENT'

确实没有必要限制更新,因为它无论如何都必须扫描 table,而拉取 doc_id 的子选择只是增加了额外的工作。