2009-03-16 17 views
6

私が取り組んでいるプロジェクトがあります。運用サーバーからのバックアップSQlサーバーデータベースに基づいています。彼らは16,000以上のユーザーの電子メールアドレスを持っていますので、システム(自動Eメール送信者を持つ)は有効なアドレスに電子メールを送信しません。SQL Serverの指定列の最後に文字列を追加する方法はありますか

しかし、私はまだユーザーが欲しいと思っています。私は自分のやりたいことを逆にすることができます。

私がしようとしているSQLは次のとおりです。

UPDATE問い合わせ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 
--------------------------- 
+0

あなたが間違っていることは、「機能しない」という意味ではありません。 '||'の場合は –

答えて

7

問題は、データの一部でEmailAddress +".x"結果が与えられたフィールドのlongにいるということです。

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

LENFIELDを表に定義されている列の長さに置き換えます。データを整理したいのであれば、すべてのフィールドを単一の電子メールアドレスに設定するだけではいかがですか?または、エラーの原因となっている行を短く修正します。

+0

私はかなり - varchar(150)ではないことを確信しています - しかし、私はチェックします。 – Ash

+0

私はそのコードを実行すると1つのレコードが返されるが、そうでない場合は空白が追加されていなければならない。私は試してトリムします。 – Ash

+0

私は、エラーメッセージが解決策はかなり簡単だったので、不良少年アップし、[OK]を – JoshBerke

-2

は、try:

UPDATE問い合わせSET のEmailAddress =のEmailAddress || '。バツ';

|| SQLのstring(varchar)concatanation演算子です。

ヒント:その他の質問をする場合は、エラーメッセージが役立ちます。

+0

-1 Oracleで使用されている '+'はSQL Serverで使用されています – bstoney

+0

毎日何かを学ぶことができます! – Martlark

6

エラーが発生した場合、より具体的にお答えできますか?私はちょうど例をノックして、それは正常に動作します。

Edit - EmailAddressフィールドは既にフィールドのフルサイズに近いので、編集がすべての必要なレコードに適用されていることを確認するには、そのフィールドの列サイズを2に変更する必要があります

ところでSQLは再びそれを変換する

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

そこに行く、歓声;) – Ash

-1

最初の結果は言う:

"文字列またはバイナリデータが切り捨てられる" MS SQLエラー

この問題は、フィールドの長さを超える文字列をフィールドに挿入しようとすると発生します。私が見つけることができる唯一の解決策は、より大きなフィールド長を設定することでした。

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

+0

フィールドの長さを増やす必要のない無効な電子メールアドレスの望ましい結果を得る方法がたくさんあります。 –

+0

あなたはエイダンですが、OPの質問は「それは働いていません、何が間違っているのですか?」 – vmarquez

1

追加のテキストを追加すると、1つ以上のメールアドレスがフィールドサイズより長くなるように見えます。追加するのではなく、最後の文字を別の文字に置き換えるのはなぜですか?

3

@domain.nameの完全修飾電子メールアドレスですか?その場合、UPDATE ... SELECT REPLACEを使って@を、例えば*に変更することができます。

関連する問題