别名可以用于字段、查询结果表等,可以极大的简化我们的数据库操作。
小结
- 可以对字段(包括计算得到的字段)做别名处理。
- 方法:(AS)+别名。AS可以省略。
- 任何含有空值的数学表达式,最后的结果都是空值。
- COALESCE函数返回第一个不为NULL的值,如果全为NULL,则返回NULL。
- 使用”“双引号包裹,可以保留别名格式。
- 字符串拼接”||”。
- 字符串通过单引号包括,拼接单引号可以通过两个单引号实现拼接。
这里把小结写在最前面,方便突出重点,具体的解释见下文。
1.创建测试表并插入数据
如下我们创建一个表:TEST_LJB,并插入数据:
CREATE TABLE TEST_LJB
(
employee VARCHAR2(10)
,salary NUMBER
,bonus NUMBER
)
TABLESPACE USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents UNLIMITED
)
;
INSERT ALL
INTO TEST_LJB VALUES ('Arvin','1000','500')
INTO TEST_LJB VALUES ('Java','1100','400')
INTO TEST_LJB VALUES ('Hive','1200','600')
INTO TEST_LJB VALUES ('Oracle','1500',NULL)
INTO TEST_LJB VALUES ('Hadoop','2000','100')
SELECT 1 FROM DUAL;
COMMIT;
2.字段别名
我们计算下每个雇员的年薪:
SELECT salary*12+bonus FROM TEST_LJB;
如果直接这样运算,有一个结果会是null。
任何含有空值的数学表达式,最后的结果都是空值。
可以采用如下方式:
SELECT salary*12+COALESCE(bonus,0) FROM TEST_LJB;
这里的 COALESCE函数返回第一个不为NULL的值,如果全为NULL,则返回NULL。
这样看起来运算字段结果太长,而且没有具体的含义,我们可以用别名年薪
SELECT salary*12+COALESCE(bonus,0) AS annual_salary FROM TEST_LJB;
也可以省略掉AS
SELECT salary*12+COALESCE(bonus,0) annual_salary FROM TEST_LJB;
如果我们的别名中见有空格,该如何实现:annual salary
我们可以使用”“进行包裹。
如下:
SELECT salary*12+COALESCE(bonus,0) AS "annual salary" FROM TEST_LJB;
而且还会保留原有的大小写格式。
3.字符串拼接
字符串拼接”||”
我们把年薪后面加个$
SELECT salary*12+COALESCE(bonus,0)||'$' AS annual_salary FROM TEST_LJB;
注意:字符串通过单引号包括。
如果我们想要的结果是含有’(单引号)的呢?10000’$
可以在增加一个’,加上需要显示的单引号,即两个单引号。
SELECT salary*12+COALESCE(bonus,0)||'''$' AS annual_salary FROM TEST_LJB;