Sql 截断并插入字符串

Sql 截断并插入字符串,sql,sql-server,Sql,Sql Server,我有一个表,其中包含具有值的列: id string 1 aaabbbfff 2 aaabbbfffff 3 aaabbbffff 4 aaabbbfffffff 5 aaaaabbbffffff 6 aaaaabbbffffff 7 jjjjjbbbffffff 8 gggggtttffffff 我有一个不可更改的部分(kkk),我需要在字符串的开头插入它。结果-‘kkkbbbfff’ 我使用更新语句: UPDATE [dbo].[mytab

我有一个表,其中包含具有值的列:

id  string

1   aaabbbfff

2   aaabbbfffff

3   aaabbbffff

4   aaabbbfffffff

5   aaaaabbbffffff

6   aaaaabbbffffff

7   jjjjjbbbffffff

8   gggggtttffffff
我有一个不可更改的部分(kkk),我需要在字符串的开头插入它。结果-‘kkkbbbfff’

我使用更新语句:

UPDATE [dbo].[mytable]
  SET string = 'kkk' +
  SUBSTRING(string, 3, LEN(string))
from
  [dbo].[mytable]
它适用于1、2、3、4行。但第5行和第6行中的exp.包含更多符号“a”和code
SUBSTRING(string,6,LEN(string))
不起作用。如何在一条语句中更改所有行

因此,我需要表:

id字符串

1   kkkfff

2   kkkfffff

3   kkkffff

4   kkkfffffff

5   kkkffffff

6   kkkffffff

7   kkkffffff

8   kkkffffff

在您的示例中,您可以这样做: 用
替换
删除所有“a”,并添加kkk

UPDATE [dbo].[mytable]
  SET string = 'kkk' + REPLACE(string, 'a','')

以下更新将从子字符串开始到第一个
f
替换为
kkk

UPDATE [dbo].[mytable]
SET string = 'kkk' + SUBSTRING(string,
                               CHARINDEX('f', string),
                               LEN(string) - CHARINDEX('f', string) + 1)
如果需要在第一个
f
之前插入
kkk
,并保留开头的子字符串,则可以使用
STUFF()

这个怎么样:

UPDATE [dbo].[mytable]
  SET string = 'kkk' + RIGHT(string, len(string)-3)
from
  [dbo].[mytable]
UPDATE [dbo].[mytable]
SET string = replace (string, left(string, charindex('f', string)-1), 'kkk')
FROM [dbo].[mytable]
这个怎么样:

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

a
是否可以出现在字符串中的其他任何位置?我需要在每行的第一个符号“f”之前插入“kkk”部分。@TimBiegeleisen否。但其他行可以包含不同的符号,如第7行和第8行。您需要在此处更具体一些。你说插入,但很明显你是在替换字符串的一部分。不要让我们猜到你真正想要完成什么。你真的想用相同数量的
k
替换开头的所有
a
,还是这只是数据的简化版本,实际上要复杂得多?@LasseV.Karlsen我需要在每行第一个符号“f”之前插入“kkk”部分。但在字符串部分“fff..”可以包含大量字符和差异符号之前,如果您总是需要替换字符串的前三个字符,这将起作用。但他写道:“但5行和6行中的exp.包含更多符号‘a’”,甚至没有注意到;但是,理解他的意思也不是件容易的事——显然他需要准确地指定他想要的是什么。此代码更新[dbo]。[mytable]SET string='kkk'+子字符串(string,CHARINDEX('f',string))无效子字符串函数需要3个参数。