2017-01-13 15 views
0

私は以下の列を持っています。最初の ':'の後に文字を抽出し、2番目の ':'の前に文字を抽出したいと思います。私はこれのためにSQL Server Expressで作業しています。前もって感謝します。さまざまな長さの中間の文字を抽出する

BN:wagtz2dp01:DPS 
BN:wagtzdp02:DPS 
BN:wagb2b2dp01:DPS 
BN:wagtzdp20:DPS 
BN:wagtzdp04-LOYALTY:DPS 
BN:wagb2b01:DPS 

私は、出力の下にしたい:

wagtz2dp01 
wagtzdp02 
wagb2b2dp01 
wagtzdp20 
wagtzdp04-LOYALTY 
wagb2b01 
+1

はあなたがこれまでに何をやったか私たちを見ることができますか?これは始めるのに最適な場所です:[パブリックフォーラムでのT-SQL質問の投稿方法](http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on -a-public-forum /) – Marusyk

答えて

0

はあなたが以下試すことができます列[テキスト]を持つテーブルを持って考えます。

select 
    SUBSTR([Text], CHARINDEX(':', [Text]), CHARINDEX(':', [Text],CHARINDEX(':', [Text])+1))) 
FROM table_name 
0

使用SUBSTRINGCHARINDEX

SELECT Substring(string, Charindex(':', string) + 1, Charindex(':', string, Charindex(':', string) + 1) - Charindex(':', string) - 1) as Middle_chars 
FROM (VALUES ('BN:wagtz2dp01:DPS'), 
       ('BN:wagtzdp02:DPS'), 
       ('BN:wagb2b2dp01:DPS'), 
       ('BN:wagtzdp20:DPS'), 
       ('BN:wagtzdp04-LOYALTY:DPS'), 
       ('BN:wagb2b01:DPS'))tc(string) 

結果:

╔═══════════════════╗ 
║ Middle_chars ║ 
╠═══════════════════╣ 
║ wagtz2dp01  ║ 
║ wagtzdp02   ║ 
║ wagb2b2dp01  ║ 
║ wagtzdp20   ║ 
║ wagtzdp04-LOYALTY ║ 
║ wagb2b01   ║ 
╚═══════════════════╝ 
関連する問題