1、NULL的特性
NULL是數據庫中特有的數據類型,當一條記錄的某個列爲NULL,則表示這個列的值是未知的、是不確定的。既然是未知的,就有無數種的可能性。因此,NULL並不是一個確定的值。
這是NULL的由來、也是NULL的基礎,所有和NULL相關的操作的結果都可以從NULL的概念推導出來。判斷一個字段是否爲NULL,應該用IS NULL或IS NOT NULL,而不能用‘=’。對NULL的判斷只能定性------(即是不是NULL(IS NULL/IS NOT NULL)),而不能定值。簡單的說,由於NULL存在着無數的可能,因此兩個NULL不是相等的關係,同樣也不能說兩個NULL就不相等,或者比較兩個NULL的大小,這些操作都是沒有意義,得不到一個確切的答案的。因此,對NULL的=、!=、>、<、>=、<=等操作的結果都是未知的,也就算說,這些操作的結果仍然是NULL。
因此在使用case 語句時如
case col_name when null
這樣的方式是不可使用的
2、sed對變量進行引用查找替換的小知識
sed: 可以使用單引號及雙引號(可引用變量)——使用雙引號時默認爲引用環境變量
3、oracle中鎖的處理
1.下面的語句用來查詢哪些對象被鎖:
select object_name,machine,s.sid,s.serial#
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid;
2.下面的語句用來殺死一個進程:
alter system kill session '24,111'; (其中24,111分別是上面查詢出的sid,serial#)
【注】以上兩步,可以通過Oracle的管理控制檯來執行。
3.如果利用上面的命令殺死一個進程後,進程狀態被置爲"killed",但是鎖定的資源很長時間沒有被釋放,那麼可以在os一級再殺死相應的進程(線程),首先執行下面的語句獲得進程(線程)號:
select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=24 (24是上面的sid)
4.在OS上殺死這個進程(線程):
1)在unix上,用root身份執行命令:
#kill -9 12345(即第3步查詢出的spid)
4、對使用echo後得到的列表的處理:
對非空行的循環列表,考慮for line in
e.g.
for line in `echo *.sh`
do
..
done