2016-08-01 11 views
0

T-SQLでは、2つの部分文字列を交換するにはどうすればよいですか?TSQLでの文字列のスワップ

私のURL欄があります

https://www.host.com/test/first-last 

例:

https://www.host.com/test/last-first 

はどのようにそれを変更することができます

https://www.host.com/test/smith-tim --> https://www.host.com/test/tim-smith 

でも可能、このですか?

+0

文字列を 'replace'したいですか? – HoneyBadger

+0

はい、そうです。 –

+0

SQLは実際に文字列操作用に構築されていません。可能であれば、アプリケーション層でこれを行う方がはるかに簡単です(あなたにとって)。そうでない場合は、[ドキュメント](https://msdn.microsoft.com/en-GB/library/ms181984.aspx)から始まるCHARINDEX、REPLACEなどの関数を参照してください。 – TZHX

答えて

0

私はすべてのレコードについて同じhttps://www.host.com/testの文字列を考えました。 https://www.host.com/test

長は、これは何の長さの制約がなく、常に最後の文字をピックアップ27

DECLARE @Value NVARCHAR(MAX) = 'https://www.host.com/test/smith-tim' 

SELECT 
    SUBSTRING(@Value, 27, CHARINDEX('-', @Value, 27)) AS FullName, -- smith-tim 
    SUBSTRING(@Value, 27, CHARINDEX('-', @Value, 27) - 27) AS FirstName, -- smith 
    SUBSTRING(@Value, CHARINDEX('-', @Value, 27) + 1, 10000) AS LastName, -- tim 
    SUBSTRING(@Value, 0, 27) + 
     SUBSTRING(@Value, CHARINDEX('-', @Value, 27) + 1, 10000) + '-' + 
     SUBSTRING(@Value, 27, CHARINDEX('-', @Value, 27) - 27) AS Result -- https://www.host.com/test/tim-smith 
+1

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

0

です...

これは、同様に最適化されたスカラーUDFとして使用することができます。..

declare @string varchar(max) 
set @string='https://www.host.com/test/last-first' 



;with 
cte 
as 
(select *,row_number() over (order by (select null)) as rownum,@string as string 
from 
[dbo].[SplitStrings_Numbers](@string,'/') 
) 
,cte1 
as 
(select string,b.item,rn,c.item as itemtobereplaced 
from cte c 
cross apply 
(
select * ,row_number() over (order by (select null)) as rn 
from [dbo].[SplitStrings_Numbers](c.item,'-') 
) b 
where rownum=5 
) 
select distinct 
replace(string,itemtobereplaced,finalstringtobreplaced) as finalstring 
from cte1 t1 
cross apply 
(select '-'+item from cte1 t2 where t1.string=t2.string order by rn desc for xml path('')) b(newvalue) 
cross apply 
(select stuff(b.newvalue,1,1,'')) a2(finalstringtobreplaced) 

出力:

https://www.host.com/test/first-last 
関連する問題