在留下部分记录的同时更新记录

时间:2014-06-13 19:47:42

标签: sql tsql

我正在尝试在Winn-Dixie购买Sweetbay后更新包含帐户名称/建筑物名称的两个表格。帐户表有两列我想要更新:name和internalname。名称列应该是直截了当的,因为我更新记录,其中任何内容都像'Sweetbay%',但内部名称更加棘手,它包含名称,如“Sweetbay Supermarket - New Tampa”或“Sweetbay Supermarket - Palmetto”。在这些情况下,我想保留“ - ”之后的文字,所以它变成了“Winn-Dixie - New Tampa”或“Winn-Dixie - Palmetto”。

处理此问题的最佳方法是什么?有什么建议吗?

此外,我还想开始清理“Winn-Dixie”的命名惯例,因为有一些帐户“Winn Dixie”应该包含“ - ”来标准化约定。我相信这将以与上述相同的方式完成。想法?

1 个答案:

答案 0 :(得分:1)

如果你提到的案例都是,那么尝试一些字符串操作(参见REPLACE和其他字符串函数at MSDN

E.g。

UPDATE #Table 
SET name = 'Winn-Dixie -' + RIGHT(Name, LEN(NAME) - CHARINDEX('-',Name))
WHERE name LIKE 'Sweetbay%'

但在现实生活场景中,您无法浏览所有记录,识别每个必要的更改并围绕它进行编码。有专门针对此的工具。尝试查找data cleansing

我记得有MS's Data Quality Projects (DQS)的演讲。这似乎很有希望,但我确信还有其他工具。

最终人类的互动是不可避免的。