【问题标题】:Sql combining two column into one variable [duplicate]Sql将两列合并为一个变量[重复]
【发布时间】:2014-03-28 20:42:59
【问题描述】:

我有一个 sql 命令

SELECT A.*,
       K1.AD CONTACTAD,
       K1.SYD CONTACTSYD,
       KR.AD KURUM,
       K2.AD SUPERVISORAD,
       K2.SYD  SUPERVISORSOYAD,
       K3.AD REQUIRERAD,
       K3.SYD REQUIRERSOYAD
FROM  
       TD_ACTIVITY A,
       KK_KS K1,
       KK_KS K2,
       KK_KS K3,
       KK_KR KR
WHERE  A.INS_CONTACT_PERSON = K1.ID
   AND A.SUPERVISOR =  K2.ID
   AND A.REQUIRERID = K3.ID 
   AND A.INSTITUTIONID = KR.ID

我想将CONTACTADCONTACTSOYAD 组合成一个变量,例如CONTACT。我该怎么做?

【问题讨论】:

  • 你试过了吗...concat
  • @Alexander 谢谢 Alex。我已经处理好了。

标签: sql oracle


【解决方案1】:

在 oracle 中使用|| 进行连接

SELECT A.*,
       K1.AD || K1.SYD as CONTACT,
       KR.AD KURUM,
       K2.AD SUPERVISORAD,
       K2.SYD  SUPERVISORSOYAD,
       K3.AD REQUIRERAD,
       K3.SYD REQUIRERSOYAD
FROM  
       TD_ACTIVITY A,
       KK_KS K1,
       KK_KS K2,
       KK_KS K3,
       KK_KR KR
WHERE  A.INS_CONTACT_PERSON = K1.ID
   AND A.SUPERVISOR =  K2.ID
   AND A.REQUIRERID = K3.ID 
   AND A.INSTITUTIONID = KR.ID

【讨论】:

    【解决方案2】:

    使用Oracle concatenation operator

    SELECT A.*,
           K1.AD || ' ' || K1.SYD CONTACT
           KR.AD KURUM,
           K2.AD SUPERVISORAD,
           K2.SYD SUPERVISORSOYAD,
           K3.AD REQUIRERAD,
           K3.SYD REQUIRERSOYAD 
      FROM TD_ACTIVITY A,
           KK_KS K1,
           KK_KS K2,
           KK_KS K3,
           KK_KR KR 
     WHERE A.INS_CONTACT_PERSON = K1.ID 
           AND A.SUPERVISOR =  K2.ID 
           AND A.REQUIRERID = K3.ID 
           AND A.INSTITUTIONID = KR.ID
    

    【讨论】:

      【解决方案3】:

      这样试试,

      SELECT A.*,
             concat(k1.ad, k1.syd) concat
             kr.ad kurum,
             k2.ad supervisorad,
             k2.syd supervisorsoyad,
             k3.ad requirerad,
             k3.syd requirersoyad
      FROM   td_activity A,
             kk_ks k1,
             kk_ks k2,
             kk_ks k3,
             kk_kr kr
      WHERE  A.ins_contact_person = k1.ID
      AND    A.supervisor         = k2.ID
      AND    A.requirerid         = k3.ID
      AND    A.institutionid      = kr.ID;
      

      请参阅 here 以了解有关 Oracle 中 CONCAT 的更多信息。

      【讨论】:

      • @OracleUser,是的。我希望它会工作。
      • 别名仅用于最终的SELECTed 表达式?可能是这个concat(k1.ad, k1.syd) concat
      • @OracleUser,哦!感谢您指出这一点。我已经更新了我的答案。
      【解决方案4】:
      SELECT K1.AD || columnName "CONTACT"
      

      这里的 columnName 是别名为 CONTACTSOYAD 的列的名称。

      你不能在同一个SELECT列表中操作别名,所以下面会报错

      SELECT CONTACTAD ||  CONTACTSOYAD "CONTACT" , ...rest of columns...
      FROM
      ..rest of query..
      

      【讨论】:

        【解决方案5】:

        请尝试:

        (K1.AD||K1.SYD) AS CONTACT
        

        【讨论】:

          【解决方案6】:

          你可以试试这个:

          select CONTACTAD || CONTACTSOYAD from emp;
          

          ||是Oracle中的串联运算符

          希望这会有所帮助..

          【讨论】:

            猜你喜欢
            • 2021-01-23
            • 2021-10-19
            • 1970-01-01
            • 2020-04-24
            • 1970-01-01
            • 1970-01-01
            • 2018-09-11
            • 1970-01-01
            • 2019-09-22
            相关资源
            最近更新 更多