Sql 获取指定字符之间的数值

Sql 获取指定字符之间的数值,sql,sql-server,Sql,Sql Server,我有一个列,其值类似于“aAb314282069480098c1234d#20e000”。 我只想从中获得“314282069480098”。我怎样才能做到这一点 我试过这样做: SUBSTRING(Mercury_AcqRefData,PATINDEX('%[0-9]%',Mercury_AcqRefData),LEN(Mercury_AcqRefData)) 但我没有做到。提前感谢您的帮助。请尝试以下内容,它将提供所需的结果: DECLARE @string varchar(200) =

我有一个列,其值类似于“aAb314282069480098c1234d#20e000”。
我只想从中获得“314282069480098”。我怎样才能做到这一点

我试过这样做:

SUBSTRING(Mercury_AcqRefData,PATINDEX('%[0-9]%',Mercury_AcqRefData),LEN(Mercury_AcqRefData))

但我没有做到。提前感谢您的帮助。

请尝试以下内容,它将提供所需的结果:

DECLARE @string varchar(200) = 'aAb314282069480098c1234d#20e000'
select left(s, patindex('%[^0-9]%', s) - 1)
FROM (SELECT SUBSTRING(@string, patindex('%[0-9]%', @string), len(@string)) 
as S
 ) XX;

请尝试以下查询:

DECLARE @Mercury_AcqRefData AS VARCHAR(200) = 'aAb31428206948220098c1234d#20e000';

DECLARE @Filter1 AS VARCHAR (200) = '';
SELECT @Filter1 = SUBSTRING(@Mercury_AcqRefData, PATINDEX('%[0-9]%', @Mercury_AcqRefData), LEN(@Mercury_AcqRefData));
SELECT SUBSTRING(@Filter1, 0, PATINDEX('%[A-Za-z]%', @Filter1));

根据@Usman Mirza的回答,我创建了以下使用原始字段名的“一行程序”:

LEFT(SUBSTRING([Mercury_AcqRefData],
               PATINDEX('%[0-9]%', [Mercury_AcqRefData]),
               LEN([Mercury_AcqRefData])),
     PATINDEX('%[^0-9]%', SUBSTRING([Mercury_AcqRefData],
                                    PATINDEX('%[0-9]%', [Mercury_AcqRefData]),
                                    LEN([Mercury_AcqRefData]))) - 1)

规则是什么?第一组数字字符串?是的,只有第一个数字字符串的长度是固定的或最大化的?谢谢@ArulKumar.:-)@戴夫,我很高兴,我帮了你。