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谓词。