2016-09-21 68 views
0

我想在sql腳本中替換一個字符串。即時通訊使用此查詢如何刪除包含字符串的行?

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

我覺得我的查詢是正確的,但即時得到這個錯誤「字符串或二進制數據將被truncated.The語句已終止」 我想這是因爲發生在列student_id數據有冗餘數據如「hdhvjf124rgrthrt」。如何刪除包含「hdhvjf124rgrthrt」東西的行?

+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語句已終止」

此異常通常意味着你的數據庫字段沒有足夠的 長度。

我想在替換字符串後,結果字符串長度大於列數據長度。嘗試更改列大小並再次運行腳本。

+1

我將它從nvarchar(255)更改爲nvarchar(max),並且它正在工作。非常感謝你 – meow

+0

sql服務器錯誤信息是有幫助和正確的知道 –

0

您必須擁有一些已有252或更多長度的數據。 因此,當您將'1 | 2_'替換爲'1 | 2_345_'時,您會在添加4個額外字符時將其推向255長度,或者如果存在更多的舊模式發生次數更多。

嘗試運行查詢,看看....

SELECT LEN(StudentId) FROM TEST ORDER BY 1 DESC 

那聰明是你的問題截斷。

但是,您已經詢問了如何執行DELETE,並且@HoneyBadger已經向您顯示。

相關問題