2016-09-21 35 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已经向您显示。

相关问题