-- 使用case表达式直接在select语句中执行条件逻辑
select ename,sal,
case when sal <=2000 then 'UNDERPAID'
when sal >=4000 then 'OVERPAID'
else 'OK'
end as status
from emp;
--coalesce函数用实际的值来替换空值
如:用0替换comm为null的值
select coalesce(comm,0) from emp;
--substr(string,start,length)
string - 指定的要截取的字符串
start - 必需,规定在字符串的何处开始
正数 - 在字符串的指定位置开始
负数 - 在从字符串结尾的指定位置开始
0 - 在字符串中的第一个字符处开始
length - 可选,指定要截取的字符串长度,缺省时返回字符表达式的值结束前的全部字符。
例如:
select substr('abcdefg',3,4) from dual;结果是cdef
select substr('abcdefg',-3,4) from dual;结果efg
select substr('abcde',2),substr('abcde',-2),substr('abcde',2,3),substr('abcdewww',-7,3) from dual;
结果是bcde、de、bcd、bcd
--translate
translate函数用于逐字符地把一个字符串变换成另一个,它通常有三个参数:要被转换的字符串,要转换的字符列表、带入字符的列表。
如:将字符串abc123中的数字替换成#
select translate('abc123','0123456789','#########') from dual;结果为abc###
--replace
REPLACE(string,search_set[,replace_set])
用途:
该函数将字符串中所有出现的search_set都替换成replace_set字符串.可以使用该函将字符串中所有出现的符号都替换成某个有效的名字.如果不指定replace_set,则将从字符串string中删除所有的搜索字符串search_set。
select replace('abc123','abc','ABC') from dual;结果为ABC123
select replace('abc123','abc') from dual;结果为123
-- 采用case表达式动态改变如何对结果排序
如:在emp表中如果job是saleman用comm排序否则用sal排序
SELECT ename,
sal,
job,
comm,
CASE
WHEN job='SALESMAN'
THEN comm
ELSE sal
END AS ordered
FROM emp
ORDER BY 5;
--
INTERSECT 返回 两个结果集的交集(即两个查询都返回的所有非重复值)。
UNION返回两个结果集的并集。
语法:
{ (<SQL-查询语句1>) }
{ INTERSECT | ubion }
{ (<SQL-查询语句2> )}
--在sql中'TRUE or NULL'结果为true,'FALSE or NULL'结果为NULL
如:select deptno from dept;
deptno
--------
10
20
30
40
select deptno from dept where deptno in (10,50,null);
deptno
--------
10
select deptno from dept where deptno not in (10,50,null);
查询结果返回0行
deptno
--------
select ename,sal,
case when sal <=2000 then 'UNDERPAID'
when sal >=4000 then 'OVERPAID'
else 'OK'
end as status
from emp;
--coalesce函数用实际的值来替换空值
如:用0替换comm为null的值
select coalesce(comm,0) from emp;
--substr(string,start,length)
string - 指定的要截取的字符串
start - 必需,规定在字符串的何处开始
正数 - 在字符串的指定位置开始
负数 - 在从字符串结尾的指定位置开始
0 - 在字符串中的第一个字符处开始
length - 可选,指定要截取的字符串长度,缺省时返回字符表达式的值结束前的全部字符。
例如:
select substr('abcdefg',3,4) from dual;结果是cdef
select substr('abcdefg',-3,4) from dual;结果efg
select substr('abcde',2),substr('abcde',-2),substr('abcde',2,3),substr('abcdewww',-7,3) from dual;
结果是bcde、de、bcd、bcd
--translate
translate函数用于逐字符地把一个字符串变换成另一个,它通常有三个参数:要被转换的字符串,要转换的字符列表、带入字符的列表。
如:将字符串abc123中的数字替换成#
select translate('abc123','0123456789','#########') from dual;结果为abc###
--replace
REPLACE(string,search_set[,replace_set])
用途:
该函数将字符串中所有出现的search_set都替换成replace_set字符串.可以使用该函将字符串中所有出现的符号都替换成某个有效的名字.如果不指定replace_set,则将从字符串string中删除所有的搜索字符串search_set。
select replace('abc123','abc','ABC') from dual;结果为ABC123
select replace('abc123','abc') from dual;结果为123
-- 采用case表达式动态改变如何对结果排序
如:在emp表中如果job是saleman用comm排序否则用sal排序
SELECT ename,
sal,
job,
comm,
CASE
WHEN job='SALESMAN'
THEN comm
ELSE sal
END AS ordered
FROM emp
ORDER BY 5;
--
INTERSECT 返回 两个结果集的交集(即两个查询都返回的所有非重复值)。
UNION返回两个结果集的并集。
语法:
{ (<SQL-查询语句1>) }
{ INTERSECT | ubion }
{ (<SQL-查询语句2> )}
--在sql中'TRUE or NULL'结果为true,'FALSE or NULL'结果为NULL
如:select deptno from dept;
deptno
--------
10
20
30
40
select deptno from dept where deptno in (10,50,null);
deptno
--------
10
select deptno from dept where deptno not in (10,50,null);
查询结果返回0行
deptno
--------
instr函数在Oracle/PLSQL中是返回要截取的字符串在源字符串中的位置。
示例:
SELECT instr('syranmo','s') FROM dual; -- 返回 1
SELECT instr('syranmo','ra') FROM dual; -- 返回 3
SELECT instr('syran mo','a',1,2) FROM dual; -- 返回 0