Ash
Ash

Reputation: 25652

How to Append String at the end of a Given a Column in SQL Server?

I have a project I am working on. based off a backup SQl Server database from a production server. They have over 16,000 user email addresses, and I want to corrupt them so the system (which has automatic emailers) will not send any emails to valid addresses.

But I still want the users, and I want them in a way that I can reverse what I do (which is why I dont want to delete them).

The SQL I am trying is:

UPDATE Contact SET
EmailAddress = EmailAddress + '.x'

But it isnt working, what am I doing wrong?

Error Message is as follows:

---------------------------
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   
---------------------------

Upvotes: 7

Views: 50805

Answers (6)

JoshBerke
JoshBerke

Reputation: 67068

The issue is that EmailAddress +".x" results in some of your data being to long for the given field. You could do:

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

Replace LENFIELD with the length of the column defined on the table. If you just want to mung the data why not just set all the fields to a single email address? Or modify the rows that are causing the error to occur to be shorter.

Upvotes: 7

Dan Breslau
Dan Breslau

Reputation: 11522

Are these fully-qualified email addresses, with @domain.name ? In that case, you could use UPDATE... SELECT REPLACE to change the @ to, say, *.

Upvotes: 3

Aidan Ryan
Aidan Ryan

Reputation: 11589

It looks to me like appending the extra text will make one or more of the email addresses longer than the field size. Rather than appending why don't you replace the last character with a different one?

Upvotes: 1

vmarquez
vmarquez

Reputation: 1377

First result on Google searching for the error message says:

"String or binary data would be truncated" MS Sql error

This problem occurs when you trying to insert to field a string that exceeds fields length. The only solution I could find was to set a bigger field length.

Ref: http://www.dotnetjunkies.com/WebLog/skiff/archive/2005/01/31/49336.aspx

Upvotes: -2

MrTelly
MrTelly

Reputation: 14865

Can you be more specific about any errors that you get? I've just knocked up an example and it works fine.

Edit - EmailAddress fields you're trying to update are already close to the full size for the field, to make sure the edit applies to all the required record, you need to change add 2 to the column size for that field

BTW Sql to convert it back again

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

Upvotes: 6

Martlark
Martlark

Reputation: 14581

try:

UPDATE Contact SET EmailAddress = EmailAddress || '.x';

the || is the string (varchar) concatanation operator in SQL.

HINT: Error messages would help if asking more questions.

Upvotes: -2

Related Questions