SQL中包含以下七種型別的函式:
一、聚合函式
- 聚合函式:回傳匯總值 (它對其應用的每個行集回傳一個值)
AVG(運算式)回傳運算式中所有的平均值,僅用于數字列并自動忽略NULL值,COUNT(運算式)回傳運算式中非NULL值的數量,可用于數字和字符列,COUNT(*)回傳表中的行數(包括有NULL值的列),MAX(運算式)回傳運算式中的最大值,忽略NULL值,可用于數字、字符和日期時間列,MIN(運算式)回傳運算式中的最小值,忽略NULL值,可用于數字、字符和日期時間列,SUM(運算式)回傳運算式中所有的總和,忽略NULL值,僅用于數字列,
二、轉換函式
- 轉型函式:將一種資料型別轉換為另外一種(有CONVERT和CAST兩種)
- CONVERT(data_type[(length)], expression [, style])
- 例: Select convert(varchar(10) ,stuno) as stuno,stuname from student
- CAST( expression AS data_type )
- 例: Select cast(stuno as varchar(10)) as stuno,stuname from student
- CONVERT(data_type[(length)], expression [, style])
Cast和Convert的區別
Cast 和Convert都是用來將一種資料型別的運算式轉換為另一種資料型別的運算式,CAST 和 CONVERT 提供相似的功能,只是語法不同,在時間轉化中一般用到convert,因為它比cast多加了一個style,可以轉化成不同時間的格式,
三、日期函式
- 日期函式:處理日期和時間(由于不能直接執行算術函式,所以日期函式就十分有用)
GETDATE()當前的系統日期,- 例:select GETDATE() --結果:2019-05-07 18:34:27.343
DATEADD(日期部分,number,date)回傳帶有指定數字(number)的日期(date),該數字添加到指定的日期部分(datepart)- 例:elect DATEADD(dd, 5, getdate()) --增加5天時間
DATEDIFF(日期部分,date1,date2)回傳兩個日期中指定的日期部分之間的差值- 例:select DATEDIFF(mm, '2010-1-1', '2010-3-1 00:00:00') --結果:2
DATENAME(日期部分,date)回傳日期中日期部分的字串形式- 例:select DATENAME(dw,GETDATE()) --結果:星期二
DATEPART(日期部分,date)回傳日期中指定的日期部分的整數形式例:select DATEPART(dw,GETDATE()) --結果(回傳今天是一周中的第幾天):3
YEAR(date)回傳指定日期的年份數值- 例:select YEAR(GETDATE()) --結果:2019
MONTH(date)回傳指定日期的月份數值DAY(date)回傳指定日期的天數值
注:
-
DATENAME 和 DATEPART 的區別,回傳的值型別不同,一個是VARCHAR一個是INT,另外就是星期會用本地語言來表示
-
當顯示日期列的內容時如果只顯示年月日部分,可以使用CONVERT轉換函式對日期列進行轉換
CONVERT(VARCHAR(10),日期欄位名,120) --120 為日期格式YYYY-MM-DD
SELECT CONVERT(VARCHAR(10),盤點日期,120) AS 盤點日期 FROM 原材料盤點日期明細表
SQL中日期的表示方法及有效范圍,如下:
| 日期部分 | 縮寫 | 值 | 日期部分 | 縮寫 | 值 |
| 年 | yy | 1753-9999 | 周 | wk | 1-53 |
| 季度 | 1-4 | 小時 | hh | 0-23 | |
| 月 | mm | 1-12 | 分鐘 | mi | 0-59 |
| 一年中的天 | dy | 1-366 | 秒 | ss | 0-59 |
| 一月中的天 | dd | 1-31 | 毫秒 | ms | 0-999 |
| 一周中的天 | dw | 1-7 |
四、數學函式
- 數學函式:執行算術運算(對數字值執行代數運算)
-
ABS(num_expr)回傳數值運算式的絕對值, -
ACOS(float_expr)回傳角(以弧度表示),它的余弦值近似于指定的浮點運算式, -
ASIN(float_expr)回傳角(以弧度表示),它的正弦值近似于指定的浮點運算式, -
ATAN(float_expr)回傳角(以弧度表示),它的正切值近似于指定的浮點運算式, -
ATN2(float_expr1, float_expr2)回傳角(以弧度表示),它的正切值在兩個近似的浮點運算式之間, -
CEILING(num_expr)回傳大于或等于數值運算式的最小整數, -
COS(float_expr)回傳以浮點運算式表示的近似于指定角度(以弧度表示)的余弦三角函式的值, -
COT(float_expr)回傳以浮點運算式表示的近似于指定角度(以弧度表示)的余切三角函式的值, -
DEGREES(num_expr)回傳數值運算式表示的弧度值對應的度值, -
EXP(float_expr)根據指定的近似浮點運算式,回傳指數值, -
FLOOR(num_expr)回傳小于或等于數值運算式的最大整數 -
LOG(float_expr)根據指定的近似浮點運算式,回傳自然對數值, -
LOG10(float_expr)根據指定的近似浮點運算式,回傳以為底的對數, -
PI()回傳常量值.141592653589793 -
POWER(num_expr,y)回傳冪為y的數值運算式的值, -
RADIANS(num_expr)回傳數值運算式表示的度值對應的弧度值, -
RAND([seed])隨機回傳的到之間的近似浮點值,可以對seed指定為整數運算式(可選), -
ROUND(num_expr,length)對數值運算式截取指定的整數長度,回傳四舍五入后的值, -
SIGN(num_expr)對正數執行+1操作,對負數和零執行-1操作, -
SIN(float_expr)回傳以浮點運算式表示的近似于指定角度(以弧度表示)的正弦三角函式的值, -
SQUARE(float_expr)回傳浮點運算式的平均值, -
SQRT(float_expr)回傳指定的近似浮點運算式的平方根, -
TAN(float_expr)回傳以浮點運算式表示的近似于指定角度(以弧度表示)的正切三角函式的值,
-
五、字串函式
- 字串函式:對字串、二進制資料或運算式執行操作(可用于binary 和varbinary資料型別列,但主要用于char和varchar資料型別)
-
Expr1+expr2回傳兩個運算式的組合形式的字串, -
ASCII(char_expr)回傳運算式最左邊字符的ASCⅡ代碼值, -
CHAR(int_expr)回傳到之間的整數運算式的ASCⅡ字符值,如果輸入的值不在有效范圍內,則回傳NULL, -
CHARINDEX('pattern',char_expr)回傳字符運算式中指定模式的起始位置, -
DIFFERENCE(char_expr1,char_expr2)根據比較兩個字符運算式的相似度,回傳到之間的值,表示匹配度最佳, -
LEN(char_expr)回傳字符運算式的長度, -
LOWER(char_expr)將字符運算式全部轉換為小寫, -
LTRIM(char_expr)回傳洗掉掉前面空格的字符運算式, -
PATINDEX('%pattern%',expr)回傳運算式中模式第一次出現的起始位置,回傳表示不存在模式形式, -
REPLICATE(char_expr,int_expr)回傳重復指定次數的字符運算式產生的字串, -
REVERSE(char_expr)反轉字符運算式, -
RIGHT(char_expr,int_expr)回傳從字符運算式最右端起根據指定的字符個數得到的字符, -
RTRIM(char_expr)回傳洗掉掉其后空格的字符運算式, -
SOUNDEX(char_expr)評估兩個字串的相似度后得到的位代碼, -
SPACE(int_expr)回傳包含指定空格數的字串, -
STR(float_expr[,length[,decimal]])回傳浮點運算式的字串表示法, -
STUFF(char_expr1,start,length,char_expr2)使用字符運算式替換字符運算式的一部分字符,從指定的位置開始替換指定的長度, -
SUBSTRING(char_expr,start,length)回傳從字符運算式的指定位置開始,截取指定長度得到的字符集, -
UPPER(char_expr)將字符運算式全部轉換為大寫,
-
六、系統函式
- 系統函式:從資料庫回傳在SQLSERVER中的值、物件或設定的特殊資訊(用于回傳元資料或配置設定)
-
COALESCE(expr1,expr2, xprN)回傳第一個非NULL運算式, -
COL_LENGTH('table_name','column_name')回傳列的長度, -
COL_NAME(table_id,column_id)回傳指定的表中的列名, -
DATALENGTH('expr')回傳任何資料型別的實際長度, -
DB_ID([‘database_name'])回傳資料庫的標識號, -
DB_NAME([database_id])回傳資料庫的名稱, -
GETANSINULL([‘database_name'])回傳資料庫的默認空性(Nullability), -
HOST_ID()回傳作業站的標識號, -
HOST_NAME()回傳作業站的名稱, -
IDENT_INCR('table_or_view')有新的記錄添加入到表中時計數加, -
IDENT_SEED('table_or_view')回傳標識列的起始編號, -
INDEX_COL('table_name',index_id,key_id)回傳索引的列名, -
ISNULL(expr,value)使用指定的值替換的NULL運算式, -
NULLIF(expr1,expr2)Expr1與Expr2相等時,回傳Null, -
OBJECT_ID('obj_name')回傳資料庫物件標識號, -
OBJECT_NAME('object_id')回傳資料庫物件名, -
STATS_DATE(table_id,index_id)回傳上次更新指定索引的統計的日期, -
SUSER_SID([‘login_name'])回傳用戶的登錄標識號, -
SUSER_ID([‘login_name'])回傳用戶的登錄標識號,這個函式類似于SUSER_SID()函式,并且保留了向后的兼容性, -
SUSER_SNAME([server_user_id])回傳用戶的登錄標識號, -
SUSER_NAME([server_user_id])回傳用戶的登錄標識號,這個函式類似于SUSER_SNAME()函式,并且保留了向后的兼容性, -
USER_ID('user_name')回傳用戶的資料庫標識號, -
USER_NAME(['user_id'])回傳用戶的資料庫名稱,
-
七、文本和影像函式
- 文本和影像函式:對文本和影像資料執行操作(通常回傳有關文本和影像資料所需的資訊,文本和影像資料是以二進制格式的形式進行存盤的)
-
TEXTPTR(col_name)回傳varbinary格式的文本指標值,對文本指標進行檢查以確保它指向第一個文本頁, -
TEXTVALID('table_name.col_name',text_ptr)檢查給定的文本指標是否有效,回傳表示有效,回傳表示指標無效,
-
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/184962.html
標籤:其他
上一篇:MySQL面試題
