我有一个我正在研究的项目.基于生产服务器的备份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
---------------------------
Run Code Online (Sandbox Code Playgroud)
问题是EmailAddress +".x"导致某些数据在给定字段中变长.你可以这样做:
select * from Contact where len(EmailAddress +".x") > LENFIELD
Run Code Online (Sandbox Code Playgroud)
将LENFIELD替换为表中定义的列的长度.如果您只想清除数据,为什么不将所有字段设置为单个电子邮件地址?或者修改导致错误发生的行更短.
您是否可以更具体地了解您获得的任何错误?我刚刚敲了一个例子,它运行正常.
编辑 - 您尝试更新的EmailAddress字段已经接近该字段的完整大小,为了确保编辑适用于所有必需的记录,您需要将add 2更改为该字段的列大小
BTW Sql再次将其转换回来
update Contact
set EmailAddress = SUBSTRING(EmailAddress , 0 , len(EmailAddress ) - 1)
where SUBSTRING(EmailAddress , len(EmailAddress ) - 1, 2) = '.x'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42736 次 |
| 最近记录: |