我想在sql脚本中替换一个字符串。我正在使用此查询
update [master].[dbo].[Test]
set Student_ID = REPLACE (Student_ID , '1|2_', '1|2_345_')
我认为我的查询是正确的,但我得到此错误“字符串或二进制数据将被截断。语句已被终止” 我认为这是因为在列Student_ID中有冗余数据,如“hdhvjf124rgrthrt”。如何删除包含“hdhvjf124rgrthrt”内容的行?
答案 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已经向你展示了这一点。