Sql 在update语句中使用replace

Sql 在update语句中使用replace,sql,sql-server,database,sql-update,Sql,Sql Server,Database,Sql Update,我有我猜我有一个愚蠢的问题,但我似乎无法让我的更新声明工作。 我有以下疑问 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 '%Veg

我有我猜我有一个愚蠢的问题,但我似乎无法让我的更新声明工作。 我有以下疑问

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'
这将返回一个包含两列的表。它有200多行。“描述”列有一个文本字段,其中包含更新的文本,而“原始”列有原始文本,因此我可以并排查看所有更改。我对它的外观很满意,所以我尝试了下面的查询来更新故事以实现更改

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'

实际上,不需要限制更新,因为它无论如何都必须扫描表,而用于提取文档id的子选择只是添加额外的工作。

尝试删除
开始事务
或结束事务。尝试以下操作:将select语句放在update语句的上方和下方,并在前后分析结果。I在那里试过。行的顺序略有变化,但内容保持不变。update语句中的植物油中有双空格,这是键入问题时出现的错误还是查询中出现的错误?抱歉,键入时出现错误。函数代码“配料”行如何?谢谢@Caleth。我添加了where谓词。