我有一系列類似的字符串:查找T-SQL子串瓦特/不同的位置和長度
'...abcd=123-456-ABC,[email protected],...'
我想的價值觀隔離的abcd
& email
,並將它們存儲在自己的變量。
我正在使用T-SQL。
我有一系列類似的字符串:查找T-SQL子串瓦特/不同的位置和長度
'...abcd=123-456-ABC,[email protected],...'
我想的價值觀隔離的abcd
& email
,並將它們存儲在自己的變量。
我正在使用T-SQL。
感謝您的答案,我能回答我的問題如下:
集STRING1 = SUBSTRING(TEXT,CHARINDEX('abcd =',TEXT)+5,CHARINDEX(',email',TEXT) - CHARINDEX('abcd =',TEXT)-5)
set string2 = SUBSTRING(TEXT,CHARINDEX('email =',TEXT)+6,CHARINDEX(',[next variable]',TEXT) - CHARINDEX('email =',TEXT)-6)
什麼:
\w+=[^,]+
# look for word characters (min one)
# a =
# and anything not a comma
用T-SQL,你可以試試這個
DECLARE @tbl TABLE(ID INT, YourString NVARCHAR(100));
INSERT INTO @tbl VALUES
(1,N'abcd=123-456-ABC,[email protected]')
,(2,N'abcd=SomeOther,[email protected]')
,(3,N'abcd=OneMore,other=123,AnOneMore=abc');
WITH Splitted AS
(
SELECT ID
,CAST(N'<x>' + REPLACE((SELECT YourString AS [*] FOR XML PATH('')),N',',N'</x><x>') + N'</x>' AS XML) AS InParts
FROM @tbl
)
SELECT ID
,LEFT(The.Part,CHARINDEX('=',The.Part)-1) AS Caption
,SUBSTRING(The.Part,CHARINDEX('=',The.Part)+1,1000) AS Value
FROM Splitted
CROSS APPLY Splitted.InParts.nodes('/x') AS A(B)
CROSS APPLY (SELECT B.value('.','nvarchar(max)')) AS The(Part)
結果
ID Caption Value
1 abcd 123-456-ABC
1 email [email protected]
2 abcd SomeOther
2 email [email protected]
3 abcd OneMore
3 other 123
3 AnOneMore abc
有什麼你嘗試用'T-SQL'寫作?你做過網絡搜索來找到「SUBSTRING」或「CHARINDEX」嗎? –
'abcd =(。+),email =(。+),'類似的東西? – Confiqure
嗨IMReal,這仍然是開放的嗎?你需要進一步的幫助嗎?請允許我提一個提示:在最佳答案的投票櫃檯下面勾選驗收檢查將是非常好的方法。這將1)標記此問題已解決2)使追隨者更容易找到最佳解決方案3)支付點給答覆者和4)支付點給你。一旦你跨越了15分的邊界,你就會被要求對投稿進行投票。這是SO的方式來說聲謝謝。快樂編碼! – Shnugo