select id,score1=case charindex('-',score) when 0 then score else left(score,charindex('-',score)-1) end,score2=case charindex('-',score) when 0 then score else substring(score,charindex('-',score)+1,8000) end
from ball

解决方案 »

  1.   

    declare @ table(id int,scroe varchar(10))
    insert @ select 1,'1' union all select 2,'1-2' union all select 3,nullselect id,case when scroe is null then null when charindex('-',scroe)=0 then scroe  else substring(scroe,1,charindex('-',scroe)-1) end as Scroe1,
    case when scroe is null then null when charindex('-',scroe)=0 then scroe  else right(scroe,len(scroe)-charindex('-',scroe)) end as Scroe2
    from @--结果(3 row(s) affected)id          Scroe1     Scroe2     
    ----------- ---------- ---------- 
    1           1          1
    2           1          2
    3           NULL       NULL(3 row(s) affected)
      

  2.   

    select id ,score1=case charindex('-',score) when 0 then score else left(score,charindex('-',score)-1) end,score2=case charindex('-',score) when 0 then score else right(score,len(score)-charindex('-',score)) end
    from ball
      

  3.   

    直接利用case..when..then..else..end做变换
      

  4.   

    为什么不直接建成
    id   scroe1    scroe2  start-flag?
    非要用sql语句为难自己呢?