SQL Server中的迭代UPDATE循环

时间:2017-02-13 17:37:12

标签: sql-server excel tsql sql-update

我真的想在这个问题上找到某种自动化方式; 客户已经有一个数据库连接到他们的前端站点几年了,直到这个日期已经输入某些位置信息作为数字代码(即县/州数据)。
他们现在想用相应的nvarchar值替换这些值。 (例如,他们不想在他们的县列中使用'8',而是希望它能够阅读'克莱蒙县'等等超过90个单独的条目。
我已经获得了一个2列excel表,一个包含旧的县数字代码,另一个包含他们请求的文本等效文件。我已将其导入临时表,但无法找到迭代匹配和更新这些值的快速方法。
我真的不想写一个90行CASE WHEN段并手动输入每个县名。打开人为错误等的门。

有什么更简单的我不知道我能在这做什么吗?

1 个答案:

答案 0 :(得分:0)

我意识到这可能有点晚了,但万一其他人正在搜索并遇到这个答案......

有两种方法可以解决此问题:在Excel或SQL Server中。

1。在Excel中

在符合条件的可用列之一中创建连接字符串,即     = CONCATENATE(“UPDATE some_table SET some_field ='”,B2,“'WHERE some_field =”,A2)

然后,您可以在列表中一直自动填充此列,从而获得90种不同的更新语句,然后您可以将这些语句复制并粘贴到查询窗口并运行。每个人都会说

UPDATE some_table SET some_field = 'MyCounty' WHERE some_field = X

每一个都将针对一个案例;因此,您可以按顺序运行它们并获得所需的结果,或者......

2。在SQL Server

如果您可以将数据导入表中,那么您需要做的就是编写一个简单的查询,其中JOIN处理这种情况,即

UPDATE T1
SET T1.County_Name = T2.Name
FROM Some_Table T1 -- The original table to be updated
INNER JOIN List_Table T2 -- The imported table from an Excel spreadsheet
    ON T1.CountyCode = T2.Code
;

在这种情况下,原始Some_Table的第1行将通过County_Code连接到导入的数据,并使用导入数据中相同代码的名称更新名称字段,这将为您提供与Excel选项,减去一些输入。