3

パイプで区切られた値を持つフィールドを持つ 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'
4

3 に答える 3

0

これは標準的な文字列分割の問題であり、多くの解決策があります。ただし、SQL Server には分割機能が組み込まれていないため、ほとんどは回避策のように感じられます。

ここで調査を開始できます: http://www.sommarskog.se/arrays-in-sql.html

于 2013-05-09T21:29:48.347 に答える