当前位置:  开发笔记 > 数据库 > 正文

如何在SQL Server中的给定列的末尾追加字符串?

如何解决《如何在SQLServer中的给定列的末尾追加字符串?》经验,为你挑选了2个好方法。

我有一个我正在研究的项目.基于生产服务器的备份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替换为表中定义的列的长度.如果您只想清除数据,为什么不将所有字段设置为单个电子邮件地址?或者修改导致错误发生的行更短.



1> JoshBerke..:

问题是EmailAddress +".x"导致某些数据在给定字段中变长.你可以这样做:

select * from Contact where len(EmailAddress +".x") > LENFIELD

将LENFIELD替换为表中定义的列的长度.如果您只想清除数据,为什么不将所有字段设置为单个电子邮件地址?或者修改导致错误发生的行更短.


好的,解决方案非常简单:UPDATE联系SET EmailAddress = RTRIM(EmailAddress)+'.x'

2> MrTelly..:

您是否可以更具体地了解您获得的任何错误?我刚刚敲了一个例子,它运行正常.

编辑 - 您尝试更新的EmailAddress字段已经接近该字段的完整大小,为了确保编辑适用于所有必需的记录,您需要将add 2更改为该字段的列大小

BTW Sql再次将其转换回来

update Contact 
set EmailAddress = SUBSTRING(EmailAddress , 0 , len(EmailAddress ) - 1)
where SUBSTRING(EmailAddress , len(EmailAddress ) - 1, 2) = '.x'

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有