获取指定字符之间的数值

时间:2019-04-04 09:23:42

标签: sql sql-server

我有一列,其值类似于'aAb314282069480098c1234d#20e000'。
我只想从中得到“ 314282069480098”。我该怎么做到。

我尝试过这样:

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

但是我没有实现。预先感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

尝试以下操作即可获得所需结果:

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;

答案 1 :(得分:3)

能否请您尝试以下查询:

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));

答案 2 :(得分:2)

基于@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)