SQL 進階(10) 函數,sql10函數

來源:互聯網
上載者:User

SQL 進階(10) 函數,sql10函數
SQL 進階(10) 函數SQL GROUP BY 語句        GROUP BY 語句用於結合合計函數,根據一個或多個列對結果集進行分組。
SQL GROUP BY 文法

SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_name
SQL GROUP BY 執行個體
        我們擁有下面這個 "Orders" 表:
O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter
        現在,我們希望尋找每個客戶的總金額(總訂單)。
        我們想要使用 GROUP BY 語句對客戶進行組合。
SELECT Customer,SUM(OrderPrice) FROM OrdersGROUP BY Customer
       結果集類似這樣:
Customer SUM(OrderPrice)
Bush 2000
Carter 1700
Adams 2000
        讓我們看一下如果省略 GROUP BY 會出現什麼情況:
SELECT Customer,SUM(OrderPrice) FROM Orders
        結果集類似這樣:
Customer SUM(OrderPrice)
Bush 5700
Carter 5700
Bush 5700
Bush 5700
Adams 5700
Carter 5700
GROUP BY 一個以上的列
        我們也可以對一個以上的列應用 GROUP BY 語句,就像這樣:
SELECT Customer,OrderDate,SUM(OrderPrice) FROM OrdersGROUP BY Customer,OrderDate
SQL HAVING 子句HAVING 子句        在 SQL 中增加 HAVING 子句原因是,WHERE 關鍵字無法與合計函數一起使用。
SQL HAVING 文法
SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_nameHAVING aggregate_function(column_name) operator value
SQL HAVING 執行個體        我們擁有下面這個 "Orders" 表:
O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter
        現在,我們希望尋找訂單總金額少於 2000 的客戶。
SELECT Customer,SUM(OrderPrice) FROM OrdersGROUP BY CustomerHAVING SUM(OrderPrice)<2000
        結果集類似:
Customer SUM(OrderPrice)
Carter 1700
        現在我們希望尋找客戶 "Bush" 或 "Adams" 擁有超過 1500 的訂單總金額。
        我們在 SQL 陳述式中增加了一個普通的 WHERE 子句:
SELECT Customer,SUM(OrderPrice) FROM OrdersWHERE Customer='Bush' OR Customer='Adams'GROUP BY CustomerHAVING SUM(OrderPrice)>1500
        結果集:
Customer SUM(OrderPrice)
Bush 2000
Adams 2000
SQL UCASE() 函數SQL UCASE() 文法
SELECT UCASE(column_name) FROM table_name
SQL UCASE() 執行個體
        我們擁有下面這個 "Persons" 表:
Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
        現在,我們希望選取 "LastName" 和 "FirstName" 列的內容,然後把 "LastName" 列轉換為大寫。
SELECT UCASE(LastName) as LastName,FirstName FROM Persons
        結果集類似這樣:
LastName FirstName
ADAMS John
BUSH George
CARTER Thomas
SQL LCASE() 函數SQL LCASE() 文法
SELECT LCASE(column_name) FROM table_name
SQL LCASE() 執行個體
        我們擁有下面這個 "Persons" 表:
Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
        現在,我們希望選取 "LastName" 和 "FirstName" 列的內容,然後把 "LastName" 列轉換為小寫。
SELECT LCASE(LastName) as LastName,FirstName FROM Persons
        結果集類似這樣:
LastName FirstName
adams John
bush George
carter Thomas
SQL MID() 函數MID() 函數
        MID 函數用於從文字欄位中提取字元。
SQL MID() 文法
SELECT MID(column_name,start[,length]) FROM table_name
參數 描述
column_name 必需。要提取字元的欄位。
start 必需。規定開始位置(起始值是 1)。
length 可選。要返回的字元數。如果省略,則 MID() 函數返回剩餘文本。
SQL MID() 執行個體
        我們擁有下面這個 "Persons" 表:
Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
        現在,我們希望從 "City" 列中提取前 3 個字元。
SELECT MID(City,1,3) as SmallCity FROM Persons
        結果集類似這樣:
SmallCity
Lon
New
Bei
SQL LEN() 函數LEN() 函數
        LEN 函數返迴文本欄位中值的長度。
SQL LEN() 文法
SELECT LEN(column_name) FROM table_name
SQL LEN() 執行個體        我們擁有下面這個 "Persons" 表:
Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
        現在,我們希望取得 "City" 列中值的長度。
SELECT LEN(City) as LengthOfAddress FROM Persons
        結果集類似這樣:
LengthOfCity
6
8
7
SQL ROUND() 函數ROUND() 函數        ROUND 函數用於把數值欄位舍入為指定的小數位元。
SQL ROUND() 文法
SELECT ROUND(column_name,decimals) FROM table_name
參數 描述
column_name 必需。要舍入的欄位。
decimals 必需。規定要返回的小數位元。
SQL ROUND() 執行個體
        我們擁有下面這個 "Products" 表:
Prod_Id ProductName Unit UnitPrice
1 gold 1000 g 32.35
2 silver 1000 g 11.56
3 copper 1000 g 6.85
        現在,我們希望把名稱和價格舍入為最接近的整數。
SELECT ProductName, ROUND(UnitPrice,0) as UnitPrice FROM Products
        結果集類似這樣:
ProductName UnitPrice
gold 32
silver 12
copper 7
SQL NOW() 函數NOW() 函數
        NOW 函數返回當前的日期和時間。
SQL NOW() 文法
SELECT NOW() FROM table_name
SQL NOW() 執行個體
        我們擁有下面這個 "Products" 表:
Prod_Id ProductName Unit UnitPrice
1 gold 1000 g 32.35
2 silver 1000 g 11.56
3 copper 1000 g 6.85
        現在,我們希望顯示當天的日期所對應的名稱和價格。
SELECT ProductName, UnitPrice, Now() as PerDate FROM Products
        結果集類似這樣:
ProductName UnitPrice PerDate
gold 32.35 12/29/2008 11:36:05 AM
silver 11.56 12/29/2008 11:36:05 AM
copper 6.85 12/29/2008 11:36:05 AM
SQL FORMAT() 函數FORMAT() 函數        FORMAT 函數用於對欄位的顯示進行格式化。
SQL FORMAT() 文法
SELECT FORMAT(column_name,format) FROM table_name
參數 描述
column_name 必需。要格式化的欄位。
format 必需。規定格式。
SQL FORMAT() 執行個體
        我們擁有下面這個 "Products" 表:
Prod_Id ProductName Unit UnitPrice
1 gold 1000 g 32.35
2 silver 1000 g 11.56
3 copper 1000 g 6.85
        現在,我們希望顯示每天日期所對應的名稱和價格(日期的顯示格式是 "YYYY-MM-DD")。
SELECT ProductName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD') as PerDateFROM Products
        結果集類似這樣:
ProductName UnitPrice PerDate
gold 32.35 12/29/2008
silver 11.56 12/29/2008
copper 6.85 12/29/2008

常用的sql函數

1.isnull() 空記錄操作
2.getdate() 擷取目前時間
3.convert() 類型轉換
4.dateadd() 日期增加
5.datediff() 日期差
6.substring() 取字串
7.replace() 字串替換
8.left(),right() 取左右子字串
9.LTrim(),RTrim() 去字串左右空格
10.STR(),int() 類型轉換
 
SQL擷取時間函數convert(varchar(10),getdate(),111)

select convert(varchar(10),getdate(),111)
結果應該是2012/10/25 後面不帶 00:00:00的
你看到了00:00:00是因為你把這個值插入了一個datatime列裡面,後面的是自動補上的。
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.