我有一列,其值类似于'aAb314282069480098c1234d#20e000'。
我只想从中得到“ 314282069480098”。我该怎么做到。
我尝试过这样:
SUBSTRING(Mercury_AcqRefData,PATINDEX('%[0-9]%',Mercury_AcqRefData),LEN(Mercury_AcqRefData))
但是我没有实现。预先感谢您的帮助。
答案 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)