将第一个出现的字符替换为一个字符,将第二个字符替换为SQL中的另一个字符

时间:2015-03-11 12:41:59

标签: sql sql-server regex

我有一个表名列,可以包含带引号的子串......“substring”... 对于此表中的每一行,我需要替换第一次出现的“with”和第二次出现的» 每行只能包含一个带引号的子字符串。

所以如果我有这样的记录'fgh“abc”sdf'我想得到这个'fgh«abc»sdf'

我无法为此提出解决方案。

2 个答案:

答案 0 :(得分:2)

首先是语法如何工作的一个例子

DECLARE @a varchar(max) = 'fgh"abc"sdf'

SELECT 
  stuff(stuff(@a, charindex('"', @a),1, '«'), 
    charindex('"', @a, charindex('"', @a) + 1), 1, '»')

结果:

fgh«abc»sdf 

这是需要的查询,其中col是列的名称:

SELECT 
  stuff(stuff(col, charindex('"', col),1, '«'), 
    charindex('"', col, charindex('"', col) + 1), 1, '»')
FROM yourtable

答案 1 :(得分:0)

您可以执行以下操作:

DECLARE @TmpVar VARCHAR(100)
SET @TmpVar = 'haha"substring"hehe'
SET @TmpVar = STUFF(@TmpVar, CHARINDEX('"', @TmpVar), 1, '«')
SET @TmpVar = REPLACE(@TmpVar, '"', '»')