【问题标题】:Add values show into single column in sql server将值添加到sql server中的单个列中
【发布时间】:2013-04-20 10:54:22
【问题描述】:

在我的表中,我有类似的经验字段

经验

  • 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)

如何在我的查询中做到这一点?有人帮帮我吗?

【问题讨论】:

    标签: sql-server sql-server-2008 select patindex


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      我找到了答案,

      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
      

      【讨论】:

        猜你喜欢
        • 2011-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-10
        • 1970-01-01
        • 2012-05-10
        • 2016-06-08
        相关资源
        最近更新 更多