2017-10-05 2 views
1

私のデータは、そのようになりますどのようにSQL Serverで文字列の唯一の特定の部分を取得するために、2012

PrimISOcodeGL 
99507 - Swimming Pools – installation & service – below ground - 1799 - Hazard 3 
18501 - Supermarkets - 5411 - Hazard 1 
91580 - Contractors Executive Supervisors - 1541 - Hazard 2 
10073 - Automobile Sales, Repair or Service Shop - 7539 - Hazard 2 

にはどうすればいいだけ第一及び第二の間の名前を取得することができますか「 - 」?

だから、そのようにする必要があります:私は

+1

最初CHARINDEXを探します。そこから+ 1の文字列を次のハイフンのcharindexまで取ります。だから、それはcharindexとして渡された数字で部分文字列になります。 – Amit

答えて

2

LENはここCHARINDEXや部分文字列を使用しての方法だ、CHARINDEXLTRIMRTRIMのような機能を使用しようとしています

PrimISOcodeGL 
Swimming Pools 
Supermarkets 
Contractors Executive Supervisors 
Automobile Sales, Repair or Service Shop 

ONLINE DEMO

declare @table table (PrimISOcodeGL varchar(256)) 

insert into @table 
values 
('99507 - Swimming Pools - installation & service - below ground - 1799 - Hazard 3'), 
('18501 - Supermarkets - 5411 - Hazard 1'), 
('91580 - Contractors Executive Supervisors - 1541 - Hazard 2'), 
('10073 - Automobile Sales, Repair or Service Shop - 7539 - Hazard 2') 

select 
    ltrim(substring(substring(PrimISOcodeGL,charindex('-',PrimISOcodeGL) + 1,9999),1,charindex('-',substring(PrimISOcodeGL,charindex('-',PrimISOcodeGL) + 1,9999)) - 1)) 
from 
    @table 
+0

このような高速応答に感謝します。しかし、この1つは2番目の ' - 'の後に停止しません。 その結果、私はちょうど 'スイミングプール'が必要です – Oleg

+0

なぜ9999を使うのですか? – Amit

+0

はい、@Olegはオンラインデモを見ます – scsimon

関連する問題