在更新语句中使用替换
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 的子选择只是增加了额外的工作。
我猜我有一个愚蠢的问题,但我似乎无法让我的更新语句起作用。 我有以下查询。
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 的子选择只是增加了额外的工作。