SQL Cookbook:一、检索记录(7)连接列的值
问题
将多列值作为一列返回。例如,要查询EMP表,返回如下结果
CLARK WORKS AS A MANAGER
KING WORKS AS A PRESIDENT
MILLER WORKS AS A CLERK
然而,要得到这个结果集的数据来自两个不同的列,EMP表中的ENAME列和JOB列。
select ename, job from emp where deptno = 10
ENAME JOB ---------- --------- CLARK MANAGER KING PRESIDENT MILLER CLERK
解决方案
查找和使用DBMS提供的内置函数,用以连接来自不同列的值。
DB2, Oracle, PostgreSQL
这些数据库使用双竖线作为连接运算符。
select ename||' WORKS AS A '||job as msg from emp where deptno=10
MySQL
这个数据库支持CONTACT函数。
select concat(ename, ' WORKS AS A ',job) as msg from emp where deptno=10
SQL Server
使用“+”运算符进行连接操作。
select ename + ' WORKS AS A ' + job as msg from emp where deptno=10
讨论
使用CONTACT函数连接来自多个列的数值。在DB2, Oracle, 和PostgreSQL中,“||”是CONTACT函数的简写方式,“+”是SQL Server中的简写方式。