2015-09-22 169 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