2014-01-09 67 views
0

在一個名爲TRY我有具有價值abc:30|def:g h i|j:k|l:m|n:o|p: |q: 0.25 |r:0.47|s:t u得到一個數值一個字符串

我要取的數值r:後給出的例子具有價值[R記錄的列ABC表:0.47但它也可以有一個值123456.012596363

我不確定使用patindex。任何人都可以請幫忙。

非常感謝

回答

0

試試這個...........

declare @abc nvarchar(100) = 'abc:30|def:g h i|j:k|l:m|n:o|p: |q: 0.25 |r:0.47|s:t u' 

select 
substring(substring(@abc,charindex('r:',@abc) + 2 ,len(@abc)), 
      1, 
      charindex('|',substring(@abc,charindex('r:',@abc) + 2,len(@abc))) - 1) 

使用這種查詢你的表

select 
    substring(substring(abc,charindex('r:',abc) + 2 ,len(abc)), 
       1, 
       charindex('|',substring(abc,charindex('r:',abc) + 2,len(abc))) - 1) 


    from TRY 

-----最後的嘗試

select case when charindex('r:',abc) = 0 then abc else 
    substring(substring(abc,charindex('r:',abc) + 2 ,len(abc)), 
       1, 
       charindex('|',substring(abc,charindex('r:',abc) + 2,len(abc))) - 1) end 


    from TRY 
+0

嗨Kishore,感謝您花時間回答這個問題。我收到此錯誤 - 消息537,級別16,狀態2,行1 傳遞給LEFT或SUBSTRING函數的長度參數無效。如果可能的話請幫忙。謝謝 – Proud2bOZ

+0

Hi @ Proud2bOZ請嘗試我上面發佈的最終查詢。 – Kishore

+0

嗨Kishore,非常感謝對此提供幫助。我真的很感謝你投入的時間和精力。Cheers Mate – Proud2bOZ