2015-09-22 194 views
0

我发现很多答案指出了我想要的正确轨道,如this。但是,如果我有一个像“此附件将是22英寸x 15英寸长”的字符串,我想要抓住“22”(字符串中的第一个int值)。另外,我不会知道int值有多大(字符数),因此我需要找到整个第一个int值,直到字符串中的下一个特殊字符/空格。从字符串中提取第一个数字的值sql

任何想法我可以怎么做呢?

+4

[SQL提取子(可能重复http://stackoverflow.com/questions/1650880/sql-extract-子串) – APH

回答

1

假设真的是在字符串中的数字,你可以使用patindex()

select left(s, patindex('%[^0-9]%', s) - 1) 
from (select substring(col, patindex('%[0-9]%', col), len(col)) as s 
     from t 
    ) t; 
+0

就是这样!但是,我不知道子字符串语法中的长度参数,并且也需要代码来计算。基本上,我希望它抓住第一个整型int(和可能的十进制)值,直到下一个特殊字符/值(空格,冒号,分号,连字符等),但忽略句点,因此我可以使用十进制值。 – JCBWS

+0

想通了!只需简单地使用PATINDEX函数顶部的Length参数'select SUBSTRING(col,patindex('%[0-9]%',col),len(patindex('%[0-9] %',col)))作为t从t开始。谢谢你的帮助,戈登! :) – JCBWS