Sql server 提取变长中间字符
我有下面的一栏,我想在第一个“:”之后和第二个“:”之前提取字符,请帮助我。为此,我正在与SQLServerExpress合作。先谢谢你Sql server 提取变长中间字符,sql-server,Sql Server,我有下面的一栏,我想在第一个“:”之后和第二个“:”之前提取字符,请帮助我。为此,我正在与SQLServerExpress合作。先谢谢你 BN:wagtz2dp01:DPS BN:wagtzdp02:DPS BN:wagb2b2dp01:DPS BN:wagtzdp20:DPS BN:wagtzdp04-LOYALTY:DPS BN:wagb2b01:DPS 我想要以下输出: wagtz2dp01 wagtzdp02 wagb2b2dp01 wagtzdp20 wagtzdp04-LOYALT
BN:wagtz2dp01:DPS
BN:wagtzdp02:DPS
BN:wagb2b2dp01:DPS
BN:wagtzdp20:DPS
BN:wagtzdp04-LOYALTY:DPS
BN:wagb2b01:DPS
我想要以下输出:
wagtz2dp01
wagtzdp02
wagb2b2dp01
wagtzdp20
wagtzdp04-LOYALTY
wagb2b01
考虑到您有一个列为[Text]的表,您可以尝试以下操作
select
SUBSTR([Text], CHARINDEX(':', [Text]), CHARINDEX(':', [Text],CHARINDEX(':', [Text])+1)))
FROM table_name
使用
SUBSTRING
和CHARINDEX
SELECT Substring(string, Charindex(':', string) + 1, Charindex(':', string, Charindex(':', string) + 1) - Charindex(':', string) - 1) as Middle_chars
FROM (VALUES ('BN:wagtz2dp01:DPS' ),
('BN:wagtzdp02:DPS' ),
('BN:wagb2b2dp01:DPS' ),
('BN:wagtzdp20:DPS' ),
('BN:wagtzdp04-LOYALTY:DPS' ),
('BN:wagb2b01:DPS' ))tc(string)
结果:
╔═══════════════════╗
║ Middle_chars ║
╠═══════════════════╣
║ wagtz2dp01 ║
║ wagtzdp02 ║
║ wagb2b2dp01 ║
║ wagtzdp20 ║
║ wagtzdp04-LOYALTY ║
║ wagb2b01 ║
╚═══════════════════╝
你能告诉我们到目前为止你做了什么吗?这是一个很好的起点: