【发布时间】:2013-09-04 03:00:58
【问题描述】:
我继承了一个项目,该项目以某种方式最终导致应用程序设置表中的随机行重复。我成功删除了重复的行,但后来我注意到 nvarchar 类型的实际值也重复了。
例如,一行有 Key 列 Error Email Address 和 Value 列 websupport@mycompany.com,websupport@mycompany.com。值列应该只包含websupport@mycompany.com。有很多这样的记录,都遵循The value,The value的相同模式。
如何检测 Value 列何时包含此类重复数据并进行更正?
请注意,仅逗号不足以说明该行无效,因为 Key Default Error Message Value Oops, something went wrong 之类的内容是正确的并且还包含逗号。
【问题讨论】:
-
您需要更好地定义一个值何时允许包含逗号,何时不允许。您当然可以编写一个约束来捕获它,但几乎可以肯定它是基于调用插入的代码或执行插入的存储过程。检查/调试该代码有多难?
-
似乎只有错误消息应该有一个逗号作为值的一部分,而其他所有内容都存储一个逗号分隔的数字/字符串列表。上面的错误电子邮件示例导致我们在出现错误时收到两封相同的电子邮件,并且存在有效的情况,例如需要通知两个不同的人某事。虽然在列中存储值列表当然不好,但这正是我必须使用的。
标签: sql sql-server