2015-10-06 107 views
0

添加到this論壇後面的邏輯迴應中,我將如何選擇第一個int與字符串中特定的一組尾隨字符?換句話說,我想從「這個東西是15個長!」中提取出「15中」!在字符串中的字符之前選擇第一個int

我試過以下(基於答案)...

SELECT LEFT(subsrt, PATINDEX('%[^0-9]%', subsrt + 't') - 1) 
FROM (
    SELECT subsrt = SUBSTRING(string, pos, LEN(string)) 
    FROM (
      SELECT string, pos = PATINDEX('%[0-9] in%', string) 
      FROM @temp 
    ) d 
) t 

...但它只是將「5」從示例字符串,而不是「15」,解壓。所以,我不僅需要整個int值(這個腳本的最初目的是在字符串中查找第一個整型值),但是我需要在字符串中的「in」之前的整個int值。

我知道這是一個潛在的重複帖子,一旦我獲得了足夠的聲望,我會將其添加爲原始論壇的答案的評論,然後刪除此帖子,如果需要的話。

回答

1

如果你例子給你「5」,然後添加一個額外的「[0-9]」

DECLARE @temp TABLE 
(
     string NVARCHAR(50) 
) 

INSERT INTO @temp (string) 
VALUES 
    ('bob this thing is 15 in long!') 

SELECT SUBSTRING(string, pos, 5) 
FROM (
    SELECT string, pos = PATINDEX('%[0-9][0-9] in%', string) 
    FROM @temp 
) d 
+0

啊,所以我必須知道字符整個int值是,如果數量我想使用PATINDEX來查找特定字符串之前的整個int值?如果是這種情況,這種解決方案將會很好!謝謝Dbloch! – JCBWS

+0

我相信你可以在[0-9]前面做一個範圍,如果數字的數量不同。谷歌的正則表達式,我相信它會像{0,4} [0-9]應該從0到4位數字 – Dbloch