双子串
Double substring
在我的 table 中,我有一列包含两个 ID:
示例:
Comment
Internal message ID: 7878 External message ID: 788CBNCGD9_3_5_87BFHJD
Internal message ID: 90278 External message ID: 788H2692029_3_5_8890ZG
我想获得两列:内部 ID 和外部 ID
Internal ID
External ID
7878
788CBNCGD9_3_5_87BFHJD
90278
788H2692029_3_5_8890ZG
我一直在考虑使用子字符串,但我不知道如何。
有人可以帮助我吗?
老实说,我建议在源代码中修复您的设计,而不是将实质上分隔的数据插入到您随后要使用的数据库中。
然而,根据我们拥有的示例数据,您可以使用 SQL 服务器的基本字符串操作来实现此目的:
SELECT SUBSTRING(V.Comment,CI1.I,CI2.I-CI1.I),
SUBSTRING(V.Comment,CI3.I, ISNULL(NULLIF(CI4.I,0),LEN(V.Comment)+1) - CI3.I)
FROM (VALUES('Internal message ID: 7878 External message ID: 788CBNCGD9_3_5_87BFHJD'),
('Internal message ID: 90278 External message ID: 788H2692029_3_5_8890ZG'))V(Comment)
CROSS APPLY (VALUES(CHARINDEX(':',V.Comment)+2))CI1(I)
CROSS APPLY (VALUES(CHARINDEX(' ',V.Comment,CI1.I)))CI2(I)
CROSS APPLY (VALUES(CHARINDEX(':',V.Comment,CI2.I)+2))CI3(I)
CROSS APPLY (VALUES(CHARINDEX(' ',V.Comment,CI3.I)))CI4(I);
在我的 table 中,我有一列包含两个 ID:
示例:
Comment |
---|
Internal message ID: 7878 External message ID: 788CBNCGD9_3_5_87BFHJD |
Internal message ID: 90278 External message ID: 788H2692029_3_5_8890ZG |
我想获得两列:内部 ID 和外部 ID
Internal ID | External ID |
---|---|
7878 | 788CBNCGD9_3_5_87BFHJD |
90278 | 788H2692029_3_5_8890ZG |
我一直在考虑使用子字符串,但我不知道如何。
有人可以帮助我吗?
老实说,我建议在源代码中修复您的设计,而不是将实质上分隔的数据插入到您随后要使用的数据库中。
然而,根据我们拥有的示例数据,您可以使用 SQL 服务器的基本字符串操作来实现此目的:
SELECT SUBSTRING(V.Comment,CI1.I,CI2.I-CI1.I),
SUBSTRING(V.Comment,CI3.I, ISNULL(NULLIF(CI4.I,0),LEN(V.Comment)+1) - CI3.I)
FROM (VALUES('Internal message ID: 7878 External message ID: 788CBNCGD9_3_5_87BFHJD'),
('Internal message ID: 90278 External message ID: 788H2692029_3_5_8890ZG'))V(Comment)
CROSS APPLY (VALUES(CHARINDEX(':',V.Comment)+2))CI1(I)
CROSS APPLY (VALUES(CHARINDEX(' ',V.Comment,CI1.I)))CI2(I)
CROSS APPLY (VALUES(CHARINDEX(':',V.Comment,CI2.I)+2))CI3(I)
CROSS APPLY (VALUES(CHARINDEX(' ',V.Comment,CI3.I)))CI4(I);