SQL / REGEX模式匹配

问题描述 投票:1回答:1

我想通过sql使用正则表达式来查询一些数据以返回值。返回的唯一有效值为“GB”和“LDN”,或者也可能为“GB-LDN”

G-GB-LDN-TT-TEST
G-GB-LDNN-TT-TEST
G-GBS-LDN-TT-TEST

在编写时,第一个GB集需要具有2个字符,LDN需要具有3个字符。两个集/组由 - 符号分隔。我需要提取数据,但同时确保它在该模式内。我看了一下正则表达式,但我看不出怎么样,好像它像子串一样,但是我看不到它。

sql regex sql-server-2014
1个回答
0
投票

如果我不正确,您仍然可以使用substring()函数来提取由-分隔的字符串部分。

select left(parsename(a.string, 3), 2)  +'-'+ left(parsename(a.string, 2) ,3)  from
    (
        select replace(substring(data, 1, len(data)-charindex('-', reverse(data))), '-', '.') [string] from <table>
    ) a

如上所述,您还可以定义提取字符串的长度。

结果:

GB-LDN
GB-LDN
GB-LDN
© www.soinside.com 2019 - 2024. All rights reserved.