Oracle中的關鍵字


 

NVL和COALESCE的區別:

nvl(COMMISSION_PCT,0)
如果第一個參數為null,則返回第二個參數
如果第一個參數為非null,則返回第一個參數

COALESCE(EXPR1,EXPR2,EXPR3...EXPRn)
從左往右數,遇到第一個非null值,則返回該非null值。
多層判斷

第一點區別:從上面可以知道,nvl只適合於兩個參數的,COALESCE適合於多個參數。

第二點區別:COALESCE里的所有參數類型必須保持一致,nvl可以不一致。

ps:1、select coalesce(to_char(PARENT_ID),'--') 項目名稱,nvl(PARENT_ID,'FD') project_name,CATEGORY_CODE "name" from DM_TRANSGAP_ANALYSIS_CONFIG;

2、select coalesce(TO_CHAR(UPDATE_USER),TO_CHAR(PARENT_ID),'--') 項目名稱,nvl(PARENT_ID,'FD') project_name,CATEGORY_CODE "name" from DM_TRANSGAP_ANALYSIS_CONFIG;

 

Connect By Prior(遞歸查詢):

1、start with id= 是定義起始節點(種子),可以是id也可以是root_id,定義為root_Id查詢該節點下所有的樹結構,定義為id(子節點)則查詢指定的樹

2、connect by prior :prior的含義為先前,前一條記錄。prior id=root_id 也就是前一條記錄

的id等於當前記錄的root_id(父id)
3、可以向下或者向上查找。。。。

4、level字段為oracle特有的層級字段,可以通過level字段查詢指定的層級

select root_id,id,name,level from t2 where level=1

 start with root_id = 0 

connect by prior id = root_id;


 年月日的日期處理:
(select sysdate from dual) time,  item.update_date>add_months(sysdate,-1) 
select (to_char(sysdate,'dd')-1) from dual 


to_char(LAST_DAY(add_months(sysdate,-1)),'dd ') (to_char(sysdate,'hh24')-1),

 select trunc(sysdate) from dual去掉時間保留日歷,namely,2017/02/01


concat(to_char(sysdate,'yyyy')||to_char(add_months(sysdate,-1), '-MM-'),'01   namely 拼接返回結果為連接參數產生的字符串。如有任何一個參數為NULL ,則返回值為 NULL

 

//計算起止時間

Calendar calendar = Calendar.getInstance();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String endDate = sdf.format(calendar.getTime());
calendar.add(Calendar.HOUR_OF_DAY, Integer.parseInt(period) * (-1));
String startDate = sdf.format(calendar.getTime());

 

||在oracle中的作用是連接兩個字符串

 (select sysdate from dual) time,

item.update_date>add_months(sysdate,-1)

select (to_char(sysdate,'dd')-1) from dual

to_char(LAST_DAY(add_months(sysdate,-1)),'dd ')

(to_char(sysdate,'hh24')-1),

 select trunc(sysdate) from dual去掉時間保留日歷,namely,2017/02/01

concat(to_char(sysdate,'yyyy')||to_char(add_months(sysdate,-1), '-MM-'),'01   namely 拼接返回結果為連接參數產生的字符串。如有任何一個參數為NULL ,則返回值為 NULL

  • ||在oracle中的作用是連接兩個字符串

substr(字段,a,b)a代表第幾個位置b代表長度0和1的效果一樣用負數則從右邊開始數第幾個位置







schema:
一個用戶有一個缺省的schema,其schema名就等於用戶名,當然一個用戶還可以使用其他的schema。如果我們訪問一個表時,沒有指明該表屬於哪一個schema中的,系統就會自動給我們在表上加上缺省的sheman名。比如我們在訪問數據庫時,訪問scott用戶下的emp表,通過select * from emp; 其實,這sql語句的完整寫法為select * from scott.emp。在數據庫中一個對象的完整名稱為schema.object,而不屬user.object。

SQL> select * from test;
NAME
----------
system

SQL> ALTER SESSION SET CURRENT_SCHEMA = scott; --改變用戶缺省schema名
Session altered.

SQL> select * from test;
NAME
----------
scott


切斷其他占用表的session:

select session_id from v$locked_object;  

SELECT sid, serial#, username, osuser FROM v$session where sid = 81;  

select session_id,serial# from v$locked_object a left join v$session b on a.session_id = b.sid; 

ALTER SYSTEM KILL SESSION '81,38658';

 

查詢版本等信息:

SELECT * FROM v$version;

10g數據庫不能有多余的with語句。

 


 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM