2015-04-23 143 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