1. 程式人生 > 實用技巧 >005 運算null 排序 模糊查詢 聚合函式

005 運算null 排序 模糊查詢 聚合函式

/*
時間:2020/09/09
功能:
    一 運算有null
    二 排序:
    三 模糊查詢
    四 聚合函式  
*/              


一 運算有null

select ename "姓名", sal "月收入", sal * 12 + isnull(comm, 0) "年收入"
    from emp

二 排序:

/*
    order by:
        1 順序: 升序 order by; 降序 order by desc 
        2 條件: 單個 組合
*/

-- 升序
select sal 
    from emp
    
order by sal -- 降序 select sal from emp order by sal desc -- 升序 + 降序 select ename, deptno, sal from emp order by deptno, sal desc

三 模糊查詢

-- 模糊查詢
select ename
    from emp
    where ename like '%a%'    -- 字串含a

select ename
    from emp
    where ename like '%'    -- 全部輸入

select
ename from emp where ename like '%.%' -- 字串含.

select ename
    from emp
    where ename like 'A%'    -- A字母開頭

select ename
    from emp
    where ename like '%S'    -- S字母結尾

select ename
    from emp
    where ename like '_A%'    -- 第二個字元為a

select ename
    from emp
    where
ename like '[a-f]%' -- 第一個字元為任意字元: a b c d e f order by ename -- 排序: 升序 select ename from emp where ename like '[a, f]%' -- 第一個字元為: a或f order by ename desc -- 排序: 降序 select ename from emp where ename like '[^a-g]%' -- 第一個字元: 不是a到g之間 order by ename -- 排序: 升序 select ename from emp where ename like '[^a, s]%' -- 第一個字元: 不是a或s之間 order by ename -- 排序: 升序

insert into emp(empno, ename) values (8762, 'kkk')
insert into emp(empno, ename) values (8763, 'c%d')
insert into emp(empno, ename) values (8764, 'd_d')
insert into emp(empno, ename) values (8765, 'e$')
insert into emp(empno, ename) values (8766, 'f%*d')
insert into emp(empno, ename) values (8767, 'f_%*d\%')

-- 轉義字元
select ename
    from emp
    where ename like '%\%%' escape '\'

select ename
    from emp
    where ename like '%\$%' escape '$'

四 聚合函式

-- 聚合函式
-- 多行函式
select lower(ename), upper(ename)-- 字串: 小寫 大寫
    from emp

-- 單行函式
select max(sal) "最高工資", min(sal) "最低工資", 
    round(avg(sal), 2) "平均工資" -- 保留兩位小數
    from emp

select count(*) "總共行數"
    from emp

select count(deptno) "部門個數"    -- 沒有去重
    from emp

select count(distinct(deptno)) "部門個數"    -- 去重
    from emp

select count(comm) "獎金"    -- 過濾 null
    from emp