将列分成两个单独的列

时间:2012-10-29 15:00:02

标签: sql sql-server

我有一个专栏name。有条目如下:

Smith, John
Smith, Joe
One whole entry

我需要将它们分成两列,如下所示:

LastName        | FirstName
---------------------------
Smith           | John
Smith           | Joe
One whole entry | 

我正在使用此查询:

SELECT left(name, CHARINDEX(', ', name)) as LastName FROM LookUps

我已经尝试了以下内容,但它显示以下逗号(例如 Smith,)。我需要它来删除以下逗号,但也显示没有逗号的条目的完整信息。

任何帮助将不胜感激。感谢..

2 个答案:

答案 0 :(得分:1)

select 
    case when charindex(',',name) > 0 
            then left(name, charindex(',',name)-1 ) 
            else name end,
    case when charindex(',',name) > 0 
            then ltrim(substring(name, charindex(',',name)+1, len(name) )) 
            else null end   
from yourtable

答案 1 :(得分:0)

另一种方式;

select
  left(name, charindex(',', name + ',', 1) - 1) as lastname,
  ltrim(substring(name,  charindex(',', name + ',', 1) + 1, len(name))) as firstname