2014-02-06 17 views
0

我已經分配了從我們的數據庫中的字符串中獲取部件號的任務。我知道這部分會在字符串中的第一個和第二個逗號之間,但我不知道如何去做這件事。任何人有任何建議?這是我將與LEL合作字符串的例子,SPEC2078,14 CUT線索,#18 1/32從SQL中的字符串中提取文本

+0

你想從那個字符串得到什麼結果? – Lamak

+2

你甚至試圖谷歌這第一次? 「split string sql」 –

+1

@ScottSelby +1和:你到目前爲止嘗試過什麼? – NickyvV

回答

0

假設PARTNO是在一列叫做P和你的表的名稱是產品:

select SUBSTRING(p, charindex(',',p,1)+1, case when charindex(',',p,charindex(',',p,1)+1) = 0 then len(p)-charindex(',',p,1) else charindex(',',p,charindex(',',p,1)+1) end) 
from products 
+0

非常感謝你我從來沒有在SQL中做過這樣的事情,所以我甚至不知道如何真正問這個問題。這會讓我開始。 – Turtleman10

1

沒問題!如果您必須爲CSV字符串中的多個不同項目執行此操作,最好編寫一個函數。

SELECT 'LEL,SPEC2078,14 CUT LEADS,#18 1/32' 

SELECT SUBSTRING('LEL,SPEC2078,14 CUT LEADS,#18 1/32',1,CHARINDEX(',','LEL,SPEC2078,14 CUT LEADS,#18 1/32',1)-1) -- Get's the first value 
SELECT SUBSTRING('LEL,SPEC2078,14 CUT LEADS,#18 1/32',CHARINDEX(',','LEL,SPEC2078,14 CUT LEADS,#18 1/32',2) + 1, CHARINDEX(',','LEL,SPEC2078,14 CUT LEADS,#18 1/32',2) + CHARINDEX(',','LEL,SPEC2078,14 CUT LEADS,#18 1/32',1)) -- Get's the next value 
0

感謝您的幫助,這是我的最終解決方案。

select inm.fpartno, SUBSTRING(inm.fdescript, charindex(',',inm.fdescript,1)+1, 

情況下,當CHARINDEX( ' 'inm.fdescript,CHARINDEX(', 'inm.fdescript,1)+1)= 0 然後LEN(inm.fdescript)-charindex(',' ,inm.fdescript,1) else CharIndex(',',inm.fdescript,CharIndex(',',inm.fdescript)+ 1) - CharIndex(',',inm.fdescript) - 1 end) from Database .dbo.inmast as inm`