我想通过sql使用正则表达式来查询一些数据以返回值。返回的唯一有效值为“GB”和“LDN”,或者也可能为“GB-LDN”
G-GB-LDN-TT-TEST
G-GB-LDNN-TT-TEST
G-GBS-LDN-TT-TEST
在编写时,第一个GB集需要具有2个字符,LDN需要具有3个字符。两个集/组由 - 符号分隔。我需要提取数据,但同时确保它在该模式内。我看了一下正则表达式,但我看不出怎么样,好像它像子串一样,但是我看不到它。
如果我不正确,您仍然可以使用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