当前位置: 代码迷 >> SQL >> SQL 21 天自学通学习札记 2
  详细解决方案

SQL 21 天自学通学习札记 2

热度:45   发布时间:2016-05-05 15:14:05.0
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

  相关解决方案