Sql 获取指定字符之间的数值
我有一个列,其值类似于“aAb314282069480098c1234d#20e000”。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) =
我只想从中获得“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.:-)@戴夫,我很高兴,我帮了你。