2016-09-21 14 views
0

sqlスクリプトの文字列を置き換えたいとします。イムこのクエリに文字列を含む行を削除するには?

update [master].[dbo].[Test] 
set Student_ID = REPLACE (Student_ID , '1|2_', '1|2_345_') 

を使用して、私は私のクエリは正しいと思いますが、列STUDENT_IDに冗長なデータを持っているので、このエラーになっイム を「文字列またはバイナリデータがtruncated.Theステートメントが終了されていることでしょう」私はこれが起こると思い"hdhvjf124rgrthrt"のように。どのように "hdhvjf124rgrthrt" stuffsを含む行を削除するには?

+0

alireza_s_84が正しく、列のデータ長を確認してください –

+1

私はそれをnvarchar(255)からnvarchar(max)に変更して動作しています。ありがとうございました – meow

答えて

0

はこれを試してみてください:

update [master].[dbo].[Test] 
set Student_ID = REPLACE (Student_ID , '1|2_', '1|2_345_') 
WHERE Student_ID like '%' + '1|2_' + '%' 
+0

それでも私はエラー "文字列またはバイナリデータが切り捨てられます。"ステートメントが終了しました – meow

0

あなたがして、それらのレコードを削除することができます。私はそれはしかし、問題はないと思う

DELETE FROM [master].[dbo].[Test] 
WHERE Student_ID LIKE '%hdhvjf124rgrthrt%' 

。私はStudent_IDの長さがあなたが(文字を追加しているので)置換を行うときには短すぎると思う。 Student_IDの長さはどのくらいで、実際の値はどれくらいですかStudent_ID

+0

私のStudent_IDの長さはnvarchar(255)です – meow

+1

そして実際のStudent_ID値はどのくらいですか?いくつかのサンプルを渡せますか? – HoneyBadger

+0

私はそれをnvarchar(255)からnvarchar(max)に変更して動作しています。 – meow

2

を「文字列またはバイナリデータがtruncated.Theステートメントが終了されていることでしょう」この例外は通常、あなたのDBフィールドが十分 長さを持っていないことを意味しています。

私はあなたが文字列を置き換えた後、結果の文字列の長さが列のデータの長さよりも大きいと思います。列サイズを変更してスクリプトを再実行してください。

+1

私はそれをnvarchar(255)からnvarchar(max)に変更して動作しています。 – meow

+0

SQL Serverのエラーメッセージが役に立ちました –

0

すでに252以上の長さのデータが必要です。 したがって、 '1 | 2_'を '1 | 2_345_'に置き換えると、余分な4文字を追加するときに255の長さに渡ります。

は賢明なあなたの問題の切り捨てだこと

SELECT LEN(StudentId) FROM TEST ORDER BY 1 DESC 

....参照するクエリを実行してみてください。

しかし、あなたはDELETEの実行方法を尋ねてきましたが、@ HoneyBadgerはすでにそれを示しています。

関連する問題