SQL经典实例(第2版)
上QQ阅读APP看书,第一时间看更新

1.7 拼接列值

  1. 问题

    你想将多列的值作为一列返回。例如,你希望对 EMP 表的查询返回如下结果集。

    CLARK WORKS AS A MANAGER
    KING WORKS AS A PRESIDENT
    MILLER WORKS AS A CLERK

    然而,生成这个结果集所需的数据来自 EMP 表中两个不同的列,即 ENAMEJOB

     select ename, job
        from emp
        where deptno = 10
    
    ENAME      JOB
    ---------- ---------
    CLARK      MANAGER
    KING       PRESIDENT
    MILLER     CLERK
    

     

  2. 解决方案

    找到并使用 DBMS(数据库管理系统)内置的函数来拼接多列的值。

    DB2、Oracle 和 PostgreSQL

    这些数据库将双竖线用作拼接运算符。

    1 select ename||' WORKS AS A '||job as msg
    2   from emp
    3  where deptno=10

    MySQL

    该数据库支持函数 CONCAT

    1 select concat(ename, ' WORKS AS A ',job) as msg
    2   from emp
    3  where deptno=10

    SQL Server

    该数据库使用运算符 + 来执行拼接操作。

    1 select ename + ' WORKS AS A ' + job as msg
    2   from emp
    3  where deptno=10

     

  3. 讨论

    使用函数 CONCAT 可以拼接多列的值。在 DB2、Oracle 和 PostgreSQL 中,函数 CONCAT 的简写为 ||,在 SQL Server 中为 +