2017-11-21 5 views
0

T-SQLを使用して、サブストリングを最初の単一スラッシュまで含めて検索したいと思います。たとえば:T-SQLはサブストリングを取得しますが、最初の単一スラッシュは含みません

https://domain/xyz/」「https://domainは」

は、これを実現する方法についていくつかの指導をお願い申し上げなるべきです。私はこれが動作すると信じて

+0

あなたが知られている文字列を見つける必要があります:あなたは正しいですし、その – DaniDev

答えて

1

このソリューションは、一つ以上の前進を扱う後にスラッシュと(http、https、ftpなどのような)任意のプロトコル接頭辞。

declare @str varchar(100) = 'https://domain/xyz/'; 
select substring(@str, 1, charindex('/',@str,(charindex('://',@str))+3)-1); 

可能性はプロトコルの後にスラッシュがないことが存在する場合(例えばhttps://domain)、あなたは以下のソリューションを使用することができます。私がまとめたのは、簡単に消耗しやすいサンプルデータです。

declare @table table (s varchar(100)); 
insert @table values 
('https://domain1/blahblah//'), 
('http://domain2/fff/ggg/hhh'), 
('https://domainX/ppp/20%xx/'), 
('ftp://ftpserver6/zzzzz'); 

select isnull(substring(s,1,nullif(charindex('/',s,(charindex('://',s))+3),0)-1),s) 
from @table t; 

戻り

https://domain1 
http://domain2 
https://domainX 
ftp://ftpserver6 
+0

パーフェクト。ありがとうございました。 – user8851548

3

select left(str, patindex('%[^/]/[^/]%', str)) 

文字列が最初にハイフンで終わる可能性がある場合は、あなたがいつでも行うことができます。

select left(str, patindex('%[^/]/[^/]%', str + 'x')) 
+0

後に「/」の最初の発生を探します をので、「// https」のの場所を探します私の悪い:) – Sami

+2

これは、文字列が 'https:// domain /'の後ろに何も置かれていない場合を除いて、動作します。 OPに関連するかもしれないし、そうでないかもしれない。 –

+0

良い解決策。ありがとうございました。 – user8851548

関連する問題