SQL列有一个我需要分成两列的值

时间:2014-03-14 13:30:38

标签: sql sql-server string tsql split

例如

我有:

PN*BR        PN
872*07       872
8445*07      8455

我需要一个新的BR栏目:

PN*BR        PN     BR
872*07       872    07
8445*07      8455   07

5 个答案:

答案 0 :(得分:2)

这是一种方式:

select t.*,
       replace(replace([PN*BR], PN, ''), '*', '') as BR
from table t

重复值是个问题。现在问题被标记为数据库,我建议:

select t.*,
       replace([PN*BR], PN + '*', '') as BR
from table t

答案 1 :(得分:1)

SELECT LEFT([PN*BR],PATINDEX('%*%',[PN*BR])-1) AS PN,
       RIGHT([PN*BR],LEN([PN*BR]) - PATINDEX('%*%',[PN*BR])) AS BR
FROM   Table

答案 2 :(得分:0)

SELECT t.*,
       STUFF([PN*BR], 1, CHARINDEX('*', [PN*BR]), '') BR
FROM <yourtable> t

答案 3 :(得分:0)

SELECT SUBSTRING(PN*BR,1,CHARINDEX('*',PN*BR,1)-1) as PN, SUBSTRING(PN*BR,CHARINDEX('*',PN*BR,1)+1,LEN(PN*BR)-CHARINDEX('*',PN*BR,1)) as BR 
FROM Table

答案 4 :(得分:-1)

在这里回答:How to split a single column values to multiple column values?

提取物:

SELECT CASE
         WHEN name LIKE '% %' THEN LEFT(name, Charindex(' ', name) - 1)
         ELSE name
       END,
       CASE
         WHEN name LIKE '% %' THEN RIGHT(name, Charindex(' ', Reverse(name)) - 1)
       END
FROM   YourTable