难道仅仅是这样简单的子串?
SET @TSQL = 'this is test string ' + @NewText + ' other text'
或者,如果预期的前一个文本并不是唯一的文字之前,也许:
SET @TSQL = 'this is test string [this text may vary] other text'
DECLARE INT @TSQL_PrefixEnding = PATINDEX('%this is test string [[]%[]] other text%', @TSQL) + LEN('this is test string [') - 1
DECLARE INT @TSQL_SuffixStart = CHARINDEX('] other text', @TSQL, @TSQL_PrefixEnding)
SET @TSQL = LEFT(@TSQL, @TSQL_PrefixEnding) + @NewText + SUBSTRING(@TSQL, @TSQL_SuffixStart, LEN(@TSQL) - @TSQL_SuffixStart + 1)
(注:我就来测试一下,看看是否“+1 “有必要或不...但它只是一个普通的一种调整的我见过,在字符串长度计算)
注意重新”回答&编辑:
- 我的回答娃。写成好像'this is test string '
等字符串为确认。
- Patindex(替换Charindex)意味着只有后缀字符串也存在时才能识别前缀字符串。
- 我将[
添加到之前的字符串中,并将]
添加到后面的字符串(根据您稍后的评论发布),这听起来像括号实际上是要识别的字符串的一部分。
- [
本身是封闭的,在[
和]
,以“逃避”它 - 所以它将被字面解释。
这里的依赖是什么?什么使得该字符串与其余字符串区分开来。括号是文字吗?因为在你的情况下,实际上会有括号吗? – 2014-09-04 16:44:56
是的,括号可以区分子字符串 – sns 2014-09-04 16:56:23