2014-11-17 73 views
0

我需要幫助獲取一列中空格之間的值。對於下面的要求,我會需要第一個空格後的值。sql服務器獲得一列中空格之間的值

我有多個行柱:

原始列

Microsoft SQL Server 
Oracle DB Server 
Delete From Table Name 
SELECT as123 987 

預期輸出是

Expected_Output

SQL 
DB 
From 
as123 
+1

請分享您到目前爲止嘗試過的查詢。你將需要SubString和CharIndex函數來獲得結果。 – danish

+1

找到第一個空格,找到下一個空格(起始空格後的起始字符),來自這兩個索引點的子字符串。 (CHARINDEX) –

回答

5

這種類型的問題的一個竅門是使用parsename()。我認爲有以下你想要做什麼,假設沒有時間在名稱:

select parsename(replace(val, ' ', '.'), 2) 

Here就是一個例子。

編輯:

Sgeddes是正確的。如果你一直希望第二個名稱,可以有三個或四個部分,然後reverse()可用於:

select reverse(parsename(replace(reverse(val), ' ', '.'), 2)) 

(這似乎是一個值確實有四個部分,我本來讀爲「刪除表名「)。

+1

+1,我喜歡這個,但我認爲應該使用'reverse':http://sqlfiddle.com/#!3/703ce/1 – sgeddes

+0

可以從你的答案中學到很多 –

+0

第二個建議完美運作。非常感謝你。 – Mitchi

0

試試這個。使用Substring, Charindex and Left string function獲取該值。

select left(substring(Col,charindex(' ',Col)+1,len(Col)),charindex(' ',substring(Col,charindex(' ',Col)+1,len(Col))))