0
我有一个用于填充网站从某些表
网站受到攻击,可能使用一些SQL注入技术和多列在此表(文字列)SQL Server表中删除垃圾邮件SQL注入有一些HTML,通常就像<div>some stuff and some links</div>
。
我只是想用第一<div>
后删除一切:
UPDATE MyTable
SET MyField = REPLACE (MyField,
SUBSTRING(MyField, CHARINDEX('<', MyField), LEN(MyField)), '')
WHERE MyField LIKE '%<%'
它在nvarchar
和char
列工作的伟大,但它不nvarchar(max)
列工作。我得到这个错误:
Msg 8152, Level 16, State 10, Row 1
String or binary data would be truncated.Msg 3621, Level 0, State 0, Row 1
The statement has been terminated.
我应该怎么做才能从nvarchar(max)
栏中移除这个东西?
实际上,字符串的结尾并不重要,它可以是任何高达8000个字符的字符,没有问题... 另外,我相信在该字段中没有其他“<”字符,大多数是城市,地区,国名... – Antonio
它正常工作nvarchar领域....但在nvarchar(最大)给出错误... – Antonio
你应该尝试选择Len(...子字符串内的替换函数... ... )并检查Len是否始终<最大值 – kiks73