我有一个我正在研究的项目.基于生产服务器的备份SQl Server数据库.他们有超过16,000个用户电子邮件地址,我想破坏他们,因此系统(有自动电子邮件)不会向有效地址发送任何电子邮件.
但我仍然想要用户,我希望他们以我可以扭转我做的方式(这就是为什么我不想删除它们).
我正在尝试的SQL是:
更新联系SET
EmailAddress = EmailAddress +'.x'
但它不起作用,我做错了什么?
错误消息如下:
--------------------------- Microsoft SQL Server Management Studio Express --------------------------- SQL Execution Error. Executed SQL statement: UPDATE Contact SET EmailAddress = EmailAddress + '.x' Error Source: .Net SqlClient Data Provider Error Message: String or binary data would be truncated. The statement has been terminated. --------------------------- OK Help ---------------------------
JoshBerke.. 7
问题是EmailAddress +".x"
导致某些数据在给定字段中变长.你可以这样做:
select * from Contact where len(EmailAddress +".x") > LENFIELD
将LENFIELD替换为表中定义的列的长度.如果您只想清除数据,为什么不将所有字段设置为单个电子邮件地址?或者修改导致错误发生的行更短.
问题是EmailAddress +".x"
导致某些数据在给定字段中变长.你可以这样做:
select * from Contact where len(EmailAddress +".x") > LENFIELD
将LENFIELD替换为表中定义的列的长度.如果您只想清除数据,为什么不将所有字段设置为单个电子邮件地址?或者修改导致错误发生的行更短.
您是否可以更具体地了解您获得的任何错误?我刚刚敲了一个例子,它运行正常.
编辑 - 您尝试更新的EmailAddress字段已经接近该字段的完整大小,为了确保编辑适用于所有必需的记录,您需要将add 2更改为该字段的列大小
BTW Sql再次将其转换回来
update Contact set EmailAddress = SUBSTRING(EmailAddress , 0 , len(EmailAddress ) - 1) where SUBSTRING(EmailAddress , len(EmailAddress ) - 1, 2) = '.x'