文章出處

  • Between..And

--between...and...在數據庫內部是做作特殊優化的,執行效率比> and<等這種方式快;
--between a and b 相當于:字段>=a and字段<=b

例如:

SELECT * FROM dbo.MyStudent WHERE S_Age BETWEEN 20 AND 30

SELECT * FROM dbo.MyStudent WHERE S_Age>=20 AND S_Age<=30

 

Between ..and還可以做分頁。

比如,我現在設置每一頁顯示3條數據

傳統的做法:

第一頁:

SELECT TOP 3 * FROM dbo.MyStudent

第二頁:

SELECT *FROM dbo.MyStudent WHERE S_ID BETWEEN 4 AND 6

...

總結分頁:

SELECT * FROM dbo.MyStudent WHERE S_ID BETWEEN (當前頁-1)*頁容量+1  AND 當前頁*頁容量

 

  • IN關鍵字

判斷一個列的值,是否在括號內:

SELECT * FROM dbo.MyStudent WHERE S_Gender IN ('女')--正確
SELECT * FROM dbo.MyStudent WHERE S_Gender IN(1) --錯誤,數據類型不同【在將 varchar 值 '男' 轉換成數據類型 int 時失敗。

 

  • 模糊查詢

使用系統已經定義好的通配符,按照定義的規則匹配數據,如果能匹配就查出來:

通配符,匹配符:_(下劃線),%(百分號),[](中括號),^(尖括號)

_代表一個任意字符;

%代表零個或多個任意字符;

[]中括號代表一個字符的取值區間;

^配和[]使用,表示不是這個區間。注意,^z字符是數據庫不兼容的,SQL Server可以用,其他數據庫用not like

--查找姓“張”的學生信息
SELECT * FROM dbo.MyStudent WHERE S_Name LIKE '張%'


--查找名字中包含字母‘o’的學生信息
SELECT * FROM dbo.MyStudent WHERE S_Name LIKE '%o%'


--查找名字的第二位是字母'i'的學生信息
SELECT * FROM dbo.MyStudent WHERE S_Name LIKE '_i%'


--取值區間,用的很少。。
--查詢中間任何位置有字母的學生信息
SELECT * FROM dbo.MyStudent WHERE S_Name LIKE '%[a-z]%'

 

--取值區間,用的很少。。

--查詢中間任何位置有數字的學生信息
SELECT * FROM dbo.MyStudent WHERE S_Name LIKE '%[0-9]%'

 

--查找名字中有字母或數字的學生信息
SELECT * FROM dbo.MyStudent WHERE S_Name LIKE '%[0-9,a-z]%'

--SELECT * FROM dbo.MyStudent WHERE S_Name LIKE '張四'
--表中有名字為張四的學生,現在判斷,_(下劃線)是否可以匹配零個字符。如果可以的話,下面的這句SQL可以檢索到數據
SELECT * FROM dbo.MyStudent WHERE S_Name LIKE '張四_'

事實證明:_下滑線不能匹配零個字符,也就是說,下劃線代表后面必須有一個字符!!!

 

--查詢最后一位不是數字的學生信息
SELECT * FROM dbo.MyStudent WHERE S_Name LIKE '%[^0-9]%'

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()