我在使用ssms 2016。我有一个字符串,它的模式是14Jan22_B_15May23_15_N_323_412_102
,我需要从中提取两件事。
1.两个_
之间的第一个数字。在这种情况下,它是15,但它可以是任何数字。我尝试了下面的方法,但它没有工作。它返回0
DECLARE @InputString VARCHAR(MAX) = '14Jan22_B_15May23_15_N_323_412_102';
DECLARE @MatchPos INT = PATINDEX('%_[0-9]+_%', @InputString);
select @MatchPos
_N_
或_R_
之后的所有数字。此外,_N_
或_R_
需要在从点1开始的数字之后。因为字母B也可以是字母N。
我没有开始研究第2点,因为我不知道如何解决第1点
1条答案
按热度按时间wz8daaqr1#
你的尝试中有一些错误,你可能不会马上抓住。其中一个问题是
'%_[0-9]+_%'
中使用的'_'
是单个字符的后缀。第二个问题是15
,不是0到9之间的数字,其中你有一个字符搜索一个数字[0-9]
。也许不是最干净的,但它有效: