截断并插入字符串

时间:2017-08-10 08:13:37

标签: sql sql-server

我的表包含带值的列:

id  string

1   aaabbbfff

2   aaabbbfffff

3   aaabbbffff

4   aaabbbfffffff

5   aaaaabbbffffff

6   aaaaabbbffffff

7   jjjjjbbbffffff

8   gggggtttffffff

我需要在字符串的开头插入不可更改的部分(kkk)。结果 - 'kkkbbbfff'

我使用UPDATE语句:

UPDATE [dbo].[mytable]
  SET string = 'kkk' +
  SUBSTRING(string, 3, LEN(string))
from
  [dbo].[mytable]

适用于1,2,3,4行。但是exp。 5行和6行包含更多符号“a”,代码SUBSTRING(string, 6, LEN(string))不起作用。如何在一个语句中更改所有行?

结果我需要表:

id string

1   kkkfff

2   kkkfffff

3   kkkffff

4   kkkfffffff

5   kkkffffff

6   kkkffffff

7   kkkffffff

8   kkkffffff

4 个答案:

答案 0 :(得分:1)

以下更新将从子字符串的开头直到f的第一个kkk

UPDATE [dbo].[mytable]
SET string = 'kkk' + SUBSTRING(string,
                               CHARINDEX('f', string),
                               LEN(string) - CHARINDEX('f', string) + 1)

如果您需要在第一个kkk之前插入f并保留起始子字符串,则可以使用STUFF()

UPDATE [dbo].[mytable]
SET string = STUFF(string, CHARINDEX('f', string)-1, CHARINDEX('f', string)-1, 'kkk')

答案 1 :(得分:0)

在您的示例中,您可以这样做: 删除全部&#39; a&#39;使用<path fill="rgba(124,181,236,0.75)" ... /> 并添加kkk

REPLACE

答案 2 :(得分:0)

这个怎么样:

UPDATE [dbo].[mytable]
  SET string = 'kkk' + RIGHT(string, len(string)-3)
from
  [dbo].[mytable]

答案 3 :(得分:0)

这个怎么样:

UPDATE [dbo].[mytable]
SET string = replace (string, left(string, charindex('f', string)-1), 'kkk')
FROM [dbo].[mytable]