我有两个输入字符串,看起来像'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)))
使用Patindex
和substring
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);
这是一个数据库<>小提琴。