在SQL中从字符串中提取文本

时间:2014-02-06 15:17:42

标签: sql sql-server

我被分配了从数据库中的字符串中获取部件号的任务。我知道该部分将在字符串中的第一个和第二个逗号之间,但我不知道如何去做。有人有什么建议吗?这是我将与LEL一起使用的字符串示例,SPEC2078,14 CUT LEADS,#18 1/32

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您需要使用Substring来提取某些字符串,并使用CharIndex来查找逗号的位置。

答案 2 :(得分:0)

假设partno位于名为p的列中,并且表的名称是products:

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

答案 3 :(得分: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) 从Database.dbo.inmast作为inm`

相关问题