2015-04-23 187 views
0

我從表中選擇BP(sys/dia)。我想將這些值分成兩個單獨的列。按'/'將值拆分爲單獨的列

CREATE TABLE #BP_INFO 
(ID INT , NAME VARCHAR(10), BP VARCHAR(10)) 

INSERT INTO #BP_INFO 
VALUES(1,'ABC','100/60') 
    ,(2,'XYZ','120/70') 
    ,(3,'GHD','110/55') 
SELECT * FROM #BP_INFO 

我想如下所示的結果:

ID NAME BP_SYS BP_DIA 
1 ABC  100  60 
2 XYZ  120  70 
3 GHD  110  55 

回答

2

這是一些可怕的標記就在那裏,但儘管如此,我知道了。

SELECT ID, NAME 
, LEFT(BP,CHARINDEX('/',BP)-1) AS BP_SYS 
, RIGHT(BP,CHARINDEX('/',REVERSE(BP))-1) AS BP_DIA 
FROM #BP_INFO 

另一種方式,如果你像我一樣,又像做的東西多種方式:

SELECT ID, NAME 
, PARSENAME(REPLACE(BP,'/','.'),2) AS BP_SYS 
, PARSENAME(REPLACE(BP,'/','.'),1) AS BP_DIA 
FROM #BP_INFO 

謝謝誰編輯的OP。好多了。

0

額外的變種已經發布的@JohnnyBell

SELECT ID , 
     NAME , 
     SUBSTRING(BP, 1, CHARINDEX('/', BP) - 1) AS BP_SYS, 
     SUBSTRING(BP, CHARINDEX('/', BP) + 1, 3) AS BP_DIA 
FROM #BP_INFO 
0

,我們可以繼續這樣也

CREATE TABLE #BP_INFO 
(ID INT , NAME VARCHAR(10), BP VARCHAR(10)) 

INSERT INTO #BP_INFO 
VALUES(1,'ABC','100/60') 
    ,(2,'XYZ','120/70') 
    ,(3,'GHD','110/55') 


SELECT ID,name, 
SUBSTRING(BP,0,CHARINDEX('/',BP)) AS BP_SYS, 
SUBSTRING(BP,CHARINDEX('/',BP)+1,LEN(BP))AS BP_DIA 
FROM #BP_INFO