2014-02-06 19 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`