我正在尝试找到一种方法,只更新/替换两个字符串之间的文本。
例如,我需要能够更新字段,并仅替换以下脚本标记之间的内容,使开头脚本标记之前的文本不受影响。
I want to keep this string<script type="text/javascript" language="javascript">********</script>
我想REPLACE不会起作用,因为脚本标签之间的文本会有所不同。是否有某种通配符?
UPDATE Products_Joined
SET TechSpecs = REPLACE (CAST(TechSpecs AS NVARCHAR(MAX)), '<script type="text/javascript" language="javascript">********</script>', '<script type="text/javascript" language="javascript">new text</script>' )
更新:根据 @Parkyprg 的回答,以下方法可行但无法替换闭合的 </script>
标签。最终结果如下。
I want to keep this string new text</script>
我们如何同时移除闭合脚本标签呢?
UPDATE Products_Joined
SET TechSpecs = REPLACE(CAST(TechSpecs AS NVARCHAR(MAX)),
SUBSTRING(CAST(TechSpecs AS NVARCHAR(MAX)),
CHARINDEX('<script type="text/javascript" language="javascript">',TechSpecs),
CHARINDEX('</script>',CAST(TechSpecs AS NVARCHAR(MAX))) -
CHARINDEX('<script type="text/javascript" language="javascript">',TechSpecs)
),' new text')
nvarchar(max)
与你问题所标记的sql-server-2000
标签有何关联?SQL Server 2000 不支持字符串的max
大小说明符。 - Andriy Mnvarchar(max)
可以工作。如果您执行DECLARE @I INT = 1
,是否会出现错误?如果没有,那么您使用的是2008版本。2005版本会给您一个错误提示:Cannot assign a default value to a local variable.
- Martin Smith