如何删除包含字符串的行?

时间:2016-09-21 08:34:18

标签: sql-server database

我想在sql脚本中替换一个字符串。我正在使用此查询

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

我认为我的查询是正确的,但我得到此错误“字符串或二进制数据将被截断。语句已被终止” 我认为这是因为在列Student_ID中有冗余数据,如“hdhvjf124rgrthrt”。如何删除包含“hdhvjf124rgrthrt”内容的行?

4 个答案:

答案 0 :(得分:2)

"字符串或二进制数据将被截断。该语句已被终止"

  

此异常通常意味着您的数据库字段不够   长度。

我认为在替换字符串后,结果字符串长度大于列数据长度。尝试更改列大小并再次运行脚本。

答案 1 :(得分:0)

试试这个:

Source

答案 2 :(得分:0)

您可以使用以下命令删除这些记录:

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

我不认为这是问题所在。我认为当你进行替换时Student_ID的长度太短(因为你要添加字符)。 Student_ID的长度是多长?Student_ID的实际值是多长?

答案 3 :(得分:0)

您必须拥有一些长度为252或更多的数据。 因此当你替换' 1 | 2 _'用' 1 | 2_345 _'当你添加4个额外的字符时,你正在推动它超过255个长度,如果存在更多的旧模式,那么你会更多。

尝试运行查询以查看....

SELECT LEN(StudentId) FROM TEST ORDER BY 1 DESC

这是你的问题截断明智。

但是,你已经问过如何进行DELETE而@HoneyBadger已经向你展示了这一点。