447358B0A8E1C0F1B7AEB1ED07EC2F25

447358B0A8E1C0F1B7AEB1ED07EC2F25

我有一个带字段的tbl,其中的值用竖线分隔,我需要将它们提取为行。

样本数据

select distinct [PROV_KEY],
[NTWK_CDS]
FROM [SPOCK].[US\AC39169].[WellPointExtract_ERR]
where [PROV_KEY] = '447358B0A8E1C0F1B7AEB1ED07EC2F25'
--results
PROV_KEY    NTWK_CDS
447358B0A8E1C0F1B7AEB1ED07EC2F25    |GA_HMO|GA_OPN|GA_PPO|GA_BD|GA_MCPPO|GA_HDPPO|

我想:
PROV_KEY                                          NTWK_CDS
447358B0A8E1C0F1B7AEB1ED07EC2F25                  GA_HMO
447358B0A8E1C0F1B7AEB1ED07EC2F25                  GA_OPN
447358B0A8E1C0F1B7AEB1ED07EC2F25                  GA_PPO

我尝试了以下操作,但只得到第一组值:
select distinct [PROV_KEY],
substring([NTWK_CDS], 1,
CHARINDEX('|',[NTWK_CDS], CHARINDEX('|',[NTWK_CDS])+1))
FROM [SPOCK].[US\AC39169].[WellPointExtract_ERR]
where [PROV_KEY] = '447358B0A8E1C0F1B7AEB1ED07EC2F25'

最佳答案

这是一个标准的字符串拆分问题,并且有很多解决方案。但是,由于SQL Server没有内置的拆分功能,因此大多数仍然感觉像是一种解决方法。

您可以在这里开始您的研究:http://www.sommarskog.se/arrays-in-sql.html

关于sql - 将管道定界字段提取为行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16471355/

10-09 00:27