【发布时间】:2013-11-13 04:27:27
【问题描述】:
谁能告诉我以下场景是否可以在 SQL Server 中实现?
场景: 在表中有一个“姓氏”列,其值如下:
- 史密斯 MD
- 乔治 医学博士
- 史密斯 MD LLC
- SMTITH JR MD
- 史密斯 III MD PA
- 史密斯,医学博士
换句话说,“姓氏”有很多标题或后缀。我想使用 SQL 清理这些数据。目前,我正在多个视图中执行此操作,例如,首先仅删除“MD”,然后在下一个视图中删除“LLC”或“JR”等等。
相反,我可以将所有这些可能的后缀/标题转储到一个表中,除了姓氏,然后再次检查该表的姓氏,如果在“姓氏”的末尾找到该字符串,则将其从中删除列?
类似:
LOCATE(a.LastName, IN (Select Suffix/Title from Code table)) > 0
然后再次查看代码表删除整个字符串。示例:
Last name is like SMITH MD
代码表将有 2 列:
Code Logic
MD SUBSTRING(a.LastName, 1, length(a.NEWlastname) - 2)
删除姓氏的 MD 并将清理后的数据转储到单独的表中。因此,我可以使用该新表中的数据进行进一步处理。
【问题讨论】:
-
尝试使用纯 SQL 执行数据清理听起来很糟糕。 SSIS 在这里有一些功能:Clicky!
标签: sql-server tsql data-cleaning