2017-11-11 123 views
0

我在我的表中的列,看起來像這樣:如何使用從字符串獲取值「 - 」分隔符在SQL

Row Scheme 
----------------------------- 
001 NULL 
002 NULL 
003 Scheme1-0.50-Point 
003 Scheme1-0.50-Point 
004 NULL 
005 Scheme1-1.00-Point 
006 1_N/A 

scheme列的值concenated這樣的:

SchemeName + '-' + Points + '-' + Units 

我想輸出使用T-SQL中使用-分隔符該字符串分隔:

Row Scheme    Name  Point Unit 
------------------------------------------------------ 
001     NULL  NULL  NULL NULL  
002     NULL  NULL  NULL NULL  
003 Scheme1-0.50-Point Scheme1  0.50 Point 
003 Scheme1-0.50-Point Scheme1  0.50 Point 
004     NULL  NULL  NULL NULL 
005 Scheme1-1.00-Point Scheme1  1.00 Point 
006     1_N/A  NULL  NULL NULL 
+0

如果可能的話,嘗試改變你的設計。 –

回答

2

你可以嘗試XML node方法,可以幫助你:

SELECT DISTINCT 
    [Row], [Scheme], 
    a.value ('/A[1]', 'VARCHAR(MAX)') [NAME], 
    a.value ('/A[2]', 'VARCHAR(MAX)') [POINT], 
    a.value ('/A[3]', 'VARCHAR(MAX)') [UNIT] 
FROM 
    (SELECT 
     [Row], [Scheme], 
     CAST('<A>'+REPLACE(ISNULL([Scheme], ''), '-', '</A><A>')+'</A>' AS XML) AS [Scheme1] 
    FROM <table_name>) A 
CROSS APPLY 
    Scheme1.nodes ('/A') as split(a) 
相關問題