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

你可能感兴趣的:(oracle,pl/sql)