javalinjx 发表于 2013-1-29 15:00:09

SQL 21 天自学通学习笔记 2

日期、时间函数:
 
select * from project;
 
针对日期型:
 
1. add_months:  增加月份
    select * from task,startdate,enddate,original_end,add_months(enddate,2) from project;
 
    select  task tasks_shorter_than_one_month from project where add_months(startdate,1) > enddate;
 
2. last_day: 最后一天
 
select enddate,last_day (enddate) from project;
 
select distinct last_day('1-FEB-95') NON_LEAP,LAST_DAY('1-FEB-96') LEAP FROM PROJECT;
 
3. months_between: 中间有几个月
 
select task,startdate,enddate,months_between(enddate,startdate) duration from project;
 
select * from project where months_between('19 MAY 95',STARTDATE) > 0;
 
4. new_time: 调整时区
 
select enddate edt,new_time(enddate,'edt','pdt') from project;
 
5. next_day: 返回与指定日期同一星期或下一星期的,星期几的确切日期;
 
select startdate,next_day(startdate,'friday') from project;
 
6. sysdate:系统日期和时间
 
select distinct dysdate from project;
 
select * from project where startdate > sysdate;
 
 
数学函数:
 
1. ABS : 绝对值 
 
select ABS(A) absolute_value from numbers;
 
2. CELL (比参数大的最小整数) 和 FLOOR(比参数小的最大整数)
 
select B,cell(B) ceiling from numbers;
 
select A,floor(A) floor from numbers;
 
3. COS COSH SIN SINH TAN TANH 三角函数,默认参数认定为弧度制;
 
4. EXP : 返回给定参数为指数,e为底数的幂值;
 
select A,EXP(A) from numbers;
 
5. LN : 返回给定参数的自然对数;
 
6. LOG: 返回结合参数的对数;
 
7. MOD: 取模;
 
SELECT A B MOD A B FROM NUMBERS
 
8. POWER: 幂数;
 
SELECT A B POWER A B FROM NUMBERS;
 
9. SIGN:如果参数的值为负数那么SIGN 返回-1 如果参数的值为正数那么SIGN 返回1
如果参数为零那么SIGN 也返回零;
 
SELECT A SIGN A FROM NUMBERS
 
 
10. SQRT:开方
 
SELECT A SQRT A FROM NUMBERS
 
 
字符串函数:
 
1. concat : 连接,等同“|| ”;
 
2. initcap:首字母转大写
 
select firstname before,initcap(firstname) after from characters;
 
3.  upper,lower
 
select firstname,upper(firstname),lower(firstname) from characters
 
4. lpad,rpad  填充字符串 , 至少两个参数
 
SQL>  select lastname,lpad(lastname,20,'*') from characters;
 
LASTNAME                             LPAD(LASTNAME,20,'*')
------------------------------------ ----------------------------------------
PURVIS                               **************PURVIS
TAYLOR                               **************TAYLOR
CHRISTINE                            ***********CHRISTINE
ADAMS                                ***************ADAMS
COSTALES                             ************COSTALES
KONG                                 ****************KONG
 
6 rows selected
 
SQL>  select lastname,rpad(lastname,20,'*') from characters;
 
LASTNAME                             RPAD(LASTNAME,20,'*')
------------------------------------ ----------------------------------------
PURVIS                               PURVIS**************
TAYLOR                               TAYLOR**************
CHRISTINE                            CHRISTINE***********
ADAMS                                ADAMS***************
COSTALES                             COSTALES************
 
 
5. ltrim,rtrim 截取字符串  ,至少一个参数
 
SQL> select lastname,rtrim(lastname) from characters;
 
LASTNAME                             RTRIM(LASTNAME)
------------------------------------ ------------------------------------
PURVIS                               PURVIS
TAYLOR                               TAYLOR
CHRISTINE                            CHRISTINE
ADAMS                                ADAMS
COSTALES                             COSTALES
KONG                                 KONG
 
6 rows selected
 
6. replace : 替换 
 
SQL> select lastname,replace(lastname,'ST','') replacement from characters;
 
LASTNAME                             REPLACEMENT
------------------------------------ ------------------------------------
PURVIS                               PURVIS
TAYLOR                               TAYLOR
CHRISTINE                            CHRIINE
ADAMS                                ADAMS
COSTALES                             COALES
KONG                                 KONG
 
6 rows selected
 
SQL> select lastname,replace(lastname,'ST',null) replacement from characters;
 
LASTNAME                             REPLACEMENT
------------------------------------ ------------------------------------
PURVIS                               PURVIS
TAYLOR                               TAYLOR
CHRISTINE                            CHRIINE
ADAMS                                ADAMS
COSTALES                             COALES
KONG                                 KONG
 
6 rows selected
 
SQL> select lastname,replace(lastname,'ST','*') replacement from characters;
 
LASTNAME                             REPLACEMENT
------------------------------------ ------------------------------------
PURVIS                               PURVIS
TAYLOR                               TAYLOR
CHRISTINE                            CHRI*INE
ADAMS                                ADAMS
COSTALES                             CO*ALES
KONG                                 KONG
 
6 rows selected
 
7. substr : 截取字串
 
SQL> select firstname,substr(firstname,2,3) from characters;
 
FIRSTNAME                            SUBSTR(FIRSTNAME,2,3)
------------------------------------ ---------------------
kelly                                ell
CHUCK                                HUC
LAURA                                AUR
FESTER                               EST
ARMANDO                              RMA
MAJOR                                AJO
 
6 rows selected
 
SQL> select firstname,substr(firstname,3) from characters;
 
FIRSTNAME                            SUBSTR(FIRSTNAME,3)
------------------------------------ --------------------------------------------------------------------
kelly                                lly
CHUCK                                UCK
LAURA                                URA
FESTER                               STER
ARMANDO                              MANDO
MAJOR                                JOR
 
6 rows selected
 
 
8. translate : 翻译函数 ,三个参数,对大小写敏感
 
select firstname,translate(firstname,'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ','NNNNNNNNNNAAAAAAAAAAAAAAAAAAAAAAAAAA')
  2  from characters;
 
FIRSTNAME                            TRANSLATE(FIRSTNAME,'012345678
------------------------------------ ------------------------------------------------------------------------
kelly                                kelly
CHUCK                                AAAAA
LAURA                                AAAAA
FESTER                               AAAAAA
ARMANDO                              AAAAAAA
MAJOR                                AAAAA
 
6 rows selected
 
 
9. instr 搜索函数
 
SQL> select lastname, instr(lastname,'O',2,1)from characters;
 
LASTNAME                             INSTR(LASTNAME,'O',2,1)
------------------------------------ -----------------------
PURVIS                                                     0
TAYLOR                                                     5
CHRISTINE                                                  0
ADAMS                                                      0
COSTALES                                                   2
KONG                                                       2
 
6 rows selected
 
10 lenght : 返回字符串的长度
 
SQL>  select firstname,length(rtrim(firstname)) from characters;
 
FIRSTNAME                            LENGTH(RTRIM(FIRSTNAME))
------------------------------------ ------------------------
kelly                                                       5
CHUCK                                                       5
LAURA                                                       5
FESTER                                                      6
ARMANDO                                                     7
MAJOR                                                       5
 
6 rows selected
 
 
转换函数:
 
1. to_char: 转换成字符串;
 
select testnum,length(to_char(testnum)) from conversions;
 
TESTNUM LENGTH(TO_CHAR(TESTNUM))
------- ------------------------
     95                        2
     23                        2
     68                        2
 
2. to_number: 转换成数字;
 
select name,testnum,testnum*to_number(name) from conversions;
 
NAME            TESTNUM TESTNUM*TO_NUMBER(NAME)
--------------- ------- -----------------------
40                   95                    3800
13                   23                     299
74                   68                    5032
 
3. greatest , least
 
SQL> select greatest('ALPHA','BRAVO','FOXTROT','DELTA') FROM CONVERSIONS;
 
GREATEST('ALPHA','BRAVO','FOXT
------------------------------
FOXTROT
FOXTROT
FOXTROT
 
SQL> select least(34,567,3,45,1090) from conversions;
 
LEAST(34,567,3,45,1090)
-----------------------
                      3
                      3
                      3
 
4. user 查询表所属的用户;
 
SQL> select user from characters;
 
USER
------------------------------
oracle
页: [1]
查看完整版本: SQL 21 天自学通学习笔记 2