2017-08-10 18 views
0

を挿入します。切り捨て、私は値を持つ列を含むテーブルきた文字列

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))は機能しません。 1つのステートメントですべての行をどのように変更できますか?結果は

私はテーブルを必要とする:あなたが好きそれを行うことができ、あなたの例では

id文字列

1 kkkfff 

2 kkkfffff 

3 kkkffff 

4 kkkfffffff 

5 kkkffffff 

6 kkkffffff 

7 kkkffffff 

8 kkkffffff 
+0

'a'は文字列のどこにでも表示できますか? –

+0

各行に最初の記号 'f'の前に 'kkk'部分を挿入する必要があります。 – Kirill

+0

@TimBiegeleisen no。しかし、他の行には、行7と行8のように異なるシンボルを含めることができます – Kirill

答えて

0

: '' REPLACEとし、KKKに

UPDATE [dbo].[mytable] 
    SET string = 'kkk' + REPLACE(string, 'a','') 
を追加し、すべてを削除します
1

以下のアップデートは、サブストリングの先頭から最初の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 = STUFF(string, CHARINDEX('f', string)-1, CHARINDEX('f', string)-1, 'kkk') 
+0

このコードは、UPDATE [dbo]。[mytable] SET string = 'kkk' + SUBSTRING(string、CHARINDEX( 'f'、string))は機能しません。 – Kirill

+0

サブ文字列関数には3つの引数が必要です。 。 – Kirill

+0

@Krillエラーを修正しました。 –

0

をどのようにこのことについて:これについて

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

文字列の最初の3文字を置き換える必要がある場合は、これが機能します。 – ssn

+0

しかし、彼はこう書いています。 "しかし、5行6行には" a "という記号が多く含まれています。 –

+0

気付かれませんでした。彼が何を意味するのかを理解するのは非常に簡単ではありません - 明らかに彼は彼が何をしているのかを正確に指定する必要があります。 – ssn

0

方法:

UPDATE [dbo].[mytable] 
SET string = replace (string, left(string, charindex('f', string)-1), 'kkk') 
FROM [dbo].[mytable] 
関連する問題