我有一系列类似的字符串:查找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