1. 程式人生 > >第十章模糊函數和聚合函數

第十章模糊函數和聚合函數

ddr 不能 sco 語法 日期類型 所有 考試 其他 日期

** 模糊查詢:《模糊查詢可以使用like、通配符來進行》


-- 通配符:
_ 一個字符
例:A like ‘C_‘ 符合條件的A 如:CS、Cd


% 任意長度的字符串
例:B like ‘CO%‘符合條件的B 如:CONST、COKE


[] 括號中所指定範圍內的一個字符
例:C like ‘9W0[1-2]‘符合條件的C 如:9W01、9W02


[^] 不在括號中所指定範圍內的任意一個字符
例:D like ‘9W0[^1-2]‘符合條件的D 如:9W03、9W07




** 使用 like 進行模糊查詢


查詢姓‘張’學生信息:
語句:select * from Student where SName like ‘張%‘

查詢住址包含‘湖南’字樣的學生:
語句:select * from Student where SAddress like ‘%湖南%‘




** 使用 between 在某個範圍內進行查詢:
解釋:查詢兩個已知值之間的值或不是兩個值之間的值。已知值分為:初值、終值。初值<=終值。
初值和終值之間用 and 分開。


例:分數在60 到 80 之間的信息:
select 列名,列名 from 表名 where 列名 between 60 and 80


實例: select StudentID,Score from Core where Score between 60 and 80

如果寫成下面的形式:《不會報錯,但也不會顯示任何信息》
select StudentID,Score from Core where Score between 80 and 60 《數值應該是從小到大》



** 查詢日期範圍《這個使用的比較多》
例:查詢不在 2013-1-1 到 2013-10-1 之間訂購的圖書:
select * from 表名 where 列名 not between ‘2013-1-1‘ and ‘2013-10-1‘


實例: select * from Sales where ord_date between ‘2013-1-1‘ and ‘2013-10-1‘

註:使用 not 來對現在條件進行‘取反’操作
實例: select * from Sales where ord_date not between ‘2013-1-1‘ and ‘2013-10-1‘




** 使用 in 在列舉值內進行查詢:
查詢的值是某些值裏面的某一個,這時就可以用列舉值 in 來進行查詢。《將列舉值放在圓括號裏,用逗號分開。》


例:查詢湖南、廣州、上海的學生姓名
select SName as 學生姓名,SAddress as 地址
from Student
where left(SAddress,2) in (‘湖南‘,‘廣州‘,‘上海‘)

註:使用 not 可以得到所有不匹配的列舉值的行。《列舉值類型必須與匹配的列具有相同的數據類型》




*** T-SQL 中的聚合函數


** sum()函數:返回表達式中所有數值的和,空值將被忽略。《只用於數字類型的列。不能夠匯總字符、日期等其他數據類型。》
例:查詢學生編號為23的考試總分。
select sum(列名) as 學生編號為23的總分 from 表名 where StudentID=23


實例: select sum(Scores) as 學生編號為23的總分 from Score where StudentID=23



註意:這種查詢只返回一個數值,因此,不能直接與可能返回多行的列一起使用來進行查詢。
例: select sum(Scores) as 學生編號為23的總分 ,CourseID as 科目編號 from Score where StudentID=23
將會報錯!《但是在一個查詢中可以同時使用多個聚合函數》



** avg()函數:返回表達式中所有數值的平均值,空值將被忽略。《只用於數字類型的列》
例: 及格學生平均分成績
select avg(Scores) as 及格成績平均分 from Score wher Scores>=60




** max()函數 和 min()函數
max :返回表達式中的最大值《忽略任何空值》
min :返回表達式中的最小值《忽略任何空值》
可用於 數值類型、字符類型、日期類型、時間類型 的列。
對於字符的列:max()函數查找排序序列的最大值、min()函數返回排序序列的最小值。


例:查詢平均成績、最高分、最低分。
select avg(Scores) as 平均分,max(Scores) as 最高分,min(Scores) as 最低分 from Score where Scores>=60


** count()函數:返回提供的組或記錄集中的計數。用於《除 text、image、ntext外的任何類型的列》
也可以用 * 來作為count()的表達式,使用*可以不必指定特定的列而計算所有行的數,當對所有行進行計數時,則包含空值的行。


例:查詢總記錄數的語句:
select count(*) as 總記錄數 from Score


例:查詢單列 Scores 記錄數的語句:
select count(Scores) as 總記錄數 from Score


例;驗證登錄用戶密碼語法
select count(*) from 表名 where name="Jack" and pwd="123456"

第十章模糊函數和聚合函數