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”和codeSUBSTRING(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个参数。