我有一个varchar
字符串,如下所示
@msg='YOUR TRXN 30206008 CREDITED.FOR ANY QUERIES CONTACT US ON OUR HOTLINE'
我想从字符串上面提取TRXN号码。
答案 0 :(得分:1)
假设号码始终位于'TRXN'
之后,您可以使用substring
,charindex
,right
,len
和patindex
的组合来提取数字:
SELECT SUBSTRING(
@msg,
CHARINDEX('TRXN', @msg) + 5,
PATINDEX('%[^0-9]%',
RIGHT(
@msg, LEN(@msg) - CHARINDEX('TRXN', @msg) - 4)
)
)
另一种不那么麻烦的方法是使用东西,但是你需要2个选择语句:
SELECT @msg = STUFF(@msg, 1, CHARINDEX('TRXN', @msg) + 4, '')
SELECT STUFF(@msg, PATINDEX('%[^0-9]%', @msg), LEN(@msg), '')
如果您的交易号始终跟随'CREDITED'
,您可以使用更简单的选择语句:
SELECT SUBSTRING(
@msg,
CHARINDEX('TRXN', @msg) + 5,
CHARINDEX('CREDITED', @msg) - CHARINDEX('TRXN', @msg) - 5
)