SQL查询/函数从字符串中提取第一个数字?不仅仅是第一个数字,而是整个数字,直到我们达到一个非数字值



我有两个输入字符串,看起来像'London 350 Paris 456 eu iu'和'New York 154 Seattle 890 pc appl iu'。

现在,我需要字符串中的第一个数字。因此,查询/函数需要遍历整个字符串,并从第一次看到数字和第一次点击非数字开始获取所有数字。

因此,在这种情况下,输出应分别为"350"和"154"。

通过这种方式,您可以获得第一个数字。

DECLARE @VAR VARCHAR(MAX) = 'London 350 Paris 456 eu iu'
SELECT SUBSTRING(@VAR, PATINDEX('%[0-9]%', @VAR), PATINDEX('%[^0-9]%', SUBSTRING(@VAR, PATINDEX('%[0-9]%', @VAR), 100)))

使用Patindexsubstring

declare @str varchar(100) = 'London 350 Paris 456 eu iu'
select left(partialString,patindex('%[a-z]%',partialString)-1) 
from (select partialString = substring(@str, patindex('%[0-9]%',@str), len(@str)))a

SQL Server中的字符串操作很棘手。 这是一种方法:

select t.str, left(v.str, patindex('%[^0-9]%', v.str + ' '))
from (values ('London 350 Paris 456 eu iu')) t(str) cross apply
(values(stuff(t.str, 1, patindex('%[0-9]%', t.str + '0') - 1, ''))) v(str);

这是一个数据库<>小提琴。

最新更新