1. 程式人生 > >sql語句EXISTS的用法和oracle中substr的用法

sql語句EXISTS的用法和oracle中substr的用法

參數 ... ble 索引 效率 put www 長度 重復記錄

轉需:EXISTS 指定一個子查詢,檢測 行 的存在。

語法: EXISTS subquery
參數: subquery 是一個受限的 SELECT 語句 (不允許有 COMPUTE 子句和 INTO 關鍵字)。
結果類型: Boolean 如果子查詢包含行,則返回 TRUE ,否則返回 FLASE 。

NOT EXISTS 的作用與 EXISTS 正好相反

EXISTS(包括 NOT EXISTS )子句的返回值是一個BOOL值。 EXISTS內部有一個子查詢語句(SELECT ... FROM...), 我將其稱為EXIST的內查詢語句。其內查詢語句返回一個結果集。 EXISTS子句根據其內查詢語句的結果集空或者非空,返回一個布爾值。

在插入記錄前,需要檢查這條記錄是否已經存在,只有當記錄不存在時才執行插入操作,可以通過使用 EXISTS 條件句防止插入重復記錄。
INSERT INTO TableIn (ANAME,ASEX)
SELECT top 1 ‘張三‘, ‘男‘ FROM TableIn
WHERE not exists (select * from TableIn where TableIn.AID = 7)

EXISTS與IN的使用效率的問題,通常情況下采用exists要比in效率高,因為IN不走索引,但要看實際情況具體使用:
IN適合於外表大而內表小的情況;EXISTS適合於外表小而內表大的情況。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Oracle的substr函數簡單用法

substr(字符串,截取開始位置,截取長度) //返回截取的字

substr(‘Hello World‘,0,1) //返回結果為 ‘H‘ *從字符串第一個字符開始截取長度為1的字符串

substr(‘Hello World‘,1,1) //返回結果為 ‘H‘ *0和1都是表示截取的開始位置為第一個字符

substr(‘Hello World‘,2,4) //返回結果為 ‘ello‘

substr(‘Hello World‘,-3,3)//返回結果為 ‘rld‘ *負數(-i)表示截取的開始位置為字符串右端向左數第i個字符

測試:

select substr(‘Hello World‘,-3,3) value from dual;

附:java中substring(index1,index2)的簡單用法

作用:從字符串索引(下標)為index1的字符開始截取長度為index2-index1 的字符串。

String str="Hello World";

System.out.println(str.substring(0,5));

打印結果為:Hello

sql語句EXISTS的用法和oracle中substr的用法