2013-04-20 29 views
0

在我的表,我有經驗,現場像添加值顯示爲SQL Server中單列

經驗

  • 5Years0Months

  • 2Years0Months

在這裏,我想將其轉換爲秒,然後將年份和月份添加到單個列中。

體驗 - [某些值]

所以我建立一個查詢像以下,

select top(10)'insert into candidates(experience)values('+ 

CAST(SUBSTRING(CAST(o.Experience AS VARCHAR(50)), 0, PATINDEX('%Years%', o.Experience))  * 31536000 AS VARCHAR(50)) 

      +','+CAST(SUBSTRING(CAST(o.Experience AS VARCHAR(50)), PATINDEX('%Years%', o.Experience) + 5 

     ,patindex('%Months%', o.Experience) - PATINDEX('%Years%', o.Experience) - 5) * 
2678400 AS VARCHAR(50))+')' 

      from candidatedetails as o 

從上面的代碼我有結果等,

經驗

insert into candidates(experience)values(157680000,0) 
insert into candidates(experience)values(31536000,26784000) 

預期結果

insert into candidates(experience)values(157680000) 
insert into candidates(experience)values(58320000)//add(31536000+26784000) 

如何在我的查詢中做到這一點?幫助我的人嗎?

回答

1

你想要的是把這樣的事情(目前產生的)

insert into candidates(experience)values(157680000,0) 
insert into candidates(experience)values(31536000,26784000) 

爲了這一點,這將總結他們

insert into candidates(experience) select 157680000+0; 
insert into candidates(experience) select 31536000+26784000; 

它看起來像類似的改變你原來的代碼:

select top(10) 'insert into candidates(experience) select '+ 
     CAST(SUBSTRING(CAST(o.Experience AS VARCHAR(50)), 0, 
      PATINDEX('%Years%', o.Experience)) * 31536000 AS VARCHAR(50)) 
    +'+'+CAST(SUBSTRING(CAST(o.Experience AS VARCHAR(50)), 
      PATINDEX('%Years%', o.Experience) + 5, 
      patindex('%Months%', o.Experience) 
      - PATINDEX('%Years%', o.Experience) - 5) * 2678400 AS VARCHAR(50))+';' 
from candidatedetails as o 
1

我找到了答案,

SELECT TOP(10) 'INSERT INTO jobs(Experience) VALUES('+ 
     CAST(SUBSTRING(CAST(r.experience AS VARCHAR(50)), 0, PATINDEX('%Years%', r.experience))*31536000 
      + SUBSTRING(CAST(r.experience AS VARCHAR(50)), PATINDEX('%Years%', r.experience) + 5, 
                 patindex('%Months%', r.Experience) - PATINDEX('%Years%', r.Experience) - 5)* 2678400 AS VARCHAR(50))+')' 
    FROM candidatedetails r