1. 程式人生 > >SQL Server2008函式大全

SQL Server2008函式大全

SQL2008 表示式:是常量、變數、列或函式等與運算子的任意組合。

1. 字串函式

函式 名稱 引數 示例 說明

ascii(字串表示式)

select ascii('abc') 返回 97

返回字串中最左側的字元的ASCII 碼。

char(整數表示式)

select char(100) 返回 d

把ASCII 碼轉換為字元。

介於0 和 255 之間的整數。如果該整數表示式不在此範圍內,將返回

NULL 值。

charindex(字串表示式 1, 字串表示式2[,整數表示式])

select charindex('ab','BCabTabD')返回 3

select charindex('ab','BCabTabD',4)返回 6

在字串2 中查詢字串 1,如果存在返回第一個匹配的位置,如果不存在返回0。如果字串 1 和字串 2 中有一個是null 則返回 null。可以指定在字串

2 中查詢的起始位置。

difference(字串表示式 1,字串表示式 2)

select difference('Green','Greene')返回 4

返回一個0 到 4 的整數值,指示兩個字元表示式的之間的相似程度。

0 表示幾乎不同或完全不同,

4 表示幾乎相同或完全相同。

注意相似並不代表相等

left(字串表示式,整數表示式)

select left('abcdefg',2) 返回 ab

返回字串中從左邊開始指定個數的字元。

right(字串表示式,整數表示式)

select right('abcdefg',2) 返回 fg

返回字串中從右邊開始指定個數的字元。

len(字串表示式)

select len('abcdefg')返回 7

select len('abcdefg

') 返回 7

返回指定字串表示式的字元數,其中不包含尾隨空格。

lower(字串表示式)

select lower('ABCDEF')返回 abcdef

返回大寫字元資料轉換為小寫的字元表示式。

upper(字串表示式)

select upper('abcdef')返回 ABCDEF

返回小寫字元資料轉換為大寫的字元表示式。

ltrim(字串表示式)

select ltrim('

abc')返回 abc

返回刪除了前導空格之後的字元表示式。

rtrim(字串表示式)

select rtrim('abc

')返回 abc

返回刪除了尾隨空格之後的字元表示式。

patindex(字串表示式 1,字串表示式 2)

select patindex('%ab%','123ab456')返回4

select patindex('ab%','123ab456')返回0

select patindex('___ab%','123ab456')返回1

select patindex('___ab_','123ab456')返回0

在字串表示式

1 中可以使用萬用字元,此字串的第一個

字元和最後一個字元通常是

%。

%表示任意多個字元,_表示任意字元

返回字串表示式

2 中字串表示式 1 所指定模式第一次出現的起始位置。沒有找到返回0

reverse(字串表示式)

select reverse('abcde')返回 edcba

返回指定字串反轉後的新字串

space(整數表示式)

select 'a'+space(2)+'b' 返回 a b

返回由指定數目的空格組成的字串。

str

(float 型小數[,總長度[,小數點

後保留的位數]])

select str(123.451)返回

123(123前面有空格)

select str(123.451,3)返回123

select str(123.451,7,3)返回123.451

select str(123.451,7,1)返回123.5

select str(123.451,5,3)返回123.5

select str(123.651,2)返回**

返回由數字轉換成的字串。返回字元數不到總長度的前面補

空格,超過總長度的截斷小數位。如果需要截斷整數位則返回

**。

注意在截斷時遵循四捨五入

總長度。它包括小數點、符號、數字以及空格。預設值為

10。

小數點後最多保留

16 位。預設不保留小數點後面的數字

stuff

(字串表示式 1,開始位置,長度,字串表示式 2)

select stuff('abcdef',2,2,'123')

返回 a123def

在字串表示式

1 中在指定的開始位置刪除指定長度的字元,

並在指定的開始位置處插入字串表示式

2。返回新字串

substring(字串表示式,開始位置,長度)

select substring('abcdef',2,2)返回bc

返回子字串

replace(字串表示式 1,字串表示式 2,字串表示式 3)

Select replace('abcttabchhabc','abc','123')

返回 123tt123hh123

用字串表示式

3 替換字串表示式 1 中出現的所有字串表

達式

2 的匹配項。返回新的字串

2. 日期和時間函式

函式名稱

引數 示例 說明

dateadd(日期部分,數字,日期)

select dateadd(year,45,'1990-12-11')

返回 2035-12-11 00:00:00.000

select dateadd(month,45,'1990-12-11')

返回 1994-09-11 00:00:00.000

select dateadd(mm,45,'1990-12-11')

返回 1994-09-11 00:00:00.000

select dateadd(qq,12,'1990-12-11')

返回 1993-12-11 00:00:00.000

select dateadd(hh,12,'1990-12-11')

返回 1990-12-11 12:00:00.000

select dateadd(yy,-12,'1990-12-11')

返回 1978-12-11 00:00:00.000

返回給指定日期加上一個時間間隔後的新的日期值。

數字:用於與指定的日期部分相加的值。如果指定了非整數值,

則將捨棄該值的小數部分,捨棄時不遵循四捨五入。

日期:指定的原日期

在此函式中

dw,dy,dd 效果一樣都表示天

datediff(日期部分,開始日期,結束日期)

select

datediff(yy,'1990-12-11','2008-9-10')

返回兩個指定日期的指定日期部分的差的整數值。

在計算時由結束日期減去開始日期

返回 18

selectdatediff(mm,'2007-12-11','2008-9-10')

返回 9

在此函式中

dw,dy,dd 效果一樣都表示天

datename(日期部分,日期)

select datename(mm,'2007-12-11')返回 12

select datename(dw,'2007-12-11')返回星期二

select datename(dd, '2007-12-11')返回 11

返回表示指定日期的指定日期部分的字串。

dw 表示一星期中星期幾,wk 表示一年中的第幾個星期

dy 表示一年中的第幾天

datepart

(日期部分,日期)

select datepart(mm,'2007-12-11')返回 12

select datepart(dw,'2007-12-11')返回 3

select datepart(dd, '2007-12-11')返回 11

返回表示指定日期的指定日期部分的整數。

wk 表示一年中的第幾個星期

dy 表示一年中的第幾天,

dw 表示一星期中星期幾,返回整數預設 1 為星期天

getdate無引數

select getdate()

返回 2009-04-28 18:57:24.153

返回當前系統日期和時間。

day

(日期)

select day('2007-12-11')返回 11

返回一個整數,表示指定日期的天的部分。

等價於

datepart(dd, 日期)

month

(日期)

select month('2007-12-11')返回 12

返回一個整數,表示指定日期的月的部分。

等價於

datepart(mm, 日期)

year

(日期)

select year('2007-12-11')返回2007

返回一個整數,表示指定日期的年的部分。

等價於

datepart(yy, 日期)

getutcdate

無引數

select getutcdate()

返回2009-04-28 10:57:24.153

返回表示當前的

UTC(世界標準時間)時間。即格林尼治時間

GMT)

3. 日期部分(指定要返回新值的日期的組成部分。下表列出了 Microsoft SQL Server 2008 可識別的日期部分及其縮寫。)

日期部分

含義

縮寫year年yy, yyyy

quarter季qq, q

month月mm, m

dayofyear天(請看函式中的說明)dy, y

day天(請看函式中的說明)dd, d

week星期wk, ww

weekday天(請看函式中的說明)dw, w

hour小時hh

minute分鐘mi, n

second秒ss, s

millisecond毫秒ms

4. 數學函式

函式名稱 引數 示例 說明

abs(數值表示式)

select abs(-23.4)返回 23.4

返回指定數值表示式的絕對值(正值)

pi無引數

select pi()返回 3.14159265358979

返回π的值

cos(浮點表示式)

select cos(pi()/3)返回 0.5

返回指定弧度的餘弦值

sin(浮點表示式)

select sin(pi()/6)返回 0.5

返回指定弧度的正弦值

cot(浮點表示式)

select cot(pi()/4)返回 1

返回指定弧度的餘切值

tan(浮點表示式)

select tan(pi()/4)返回 1

返回指定弧度的正切值

acos(浮點表示式)

select acos(0.5)返回 1.0471975511966

返回其餘弦是所指定的數值表示式的弧度,求反餘弦

asin(浮點表示式)

select asin(0.5)返回 0.523598775598299

返回其正弦是所指定的數值表示式的弧度,求反正弦

atan(浮點表示式)

select atan(1)返回0.785398163397448

返回其正切是所指定的數值表示式的弧度,求反正切

degrees

(數值表示式)

select degrees(pi()/4) 返回45

返回以弧度指定的角的相應角度。

radians(數值表示式)

select radians(180.0)

返回3.1415926535897931

返回指定度數的弧度值。注意如果傳入整數值則返回的結果將

會省略小數部分

exp(浮點表示式)

select exp(4)返回54.5981500331442

返回求

e 的指定次冪,e=2.718281…

log(浮點表示式)

select log(6)返回1.79175946922805

返回以 e 為底的對數,求自然對數。

Log10(浮點表示式)

select log10(100)返回2

返回以 10 為底的對數

ceiling(數值表示式)

select ceiling(5.44)返回6

select ceiling(-8.44)返回-8

返回大於或等於指定數值表示式的最小整數。

floor(數值表示式)

select floor(5.44)返回5

select floor(-8.44)返回-9

返回小於或等於指定數值表示式的最大整數。

power(數值表示式 1,數值表示式 2)

select power(5,2)返回25

返回數值表示式

1 的數值表示式 2 次冪

sqrt(數值表示式)

select sqrt(25)返回5

返回數值表示式的平方根

sign(數值表示式)

select sign(6)返回1

select sign(-6)返回-1

select sign(0)返回0

表示式為正返回+1

表示式為負返回-1

表示式為零返回0

rand([整數表示式])

select rand(100)返回0.715436657367485

select rand()返回0.28463380767982

select rand()返回0.0131039082850364

返回從0 到 1 之間的隨機 float 值。整數表示式為種子,使用相同的種子產生隨機數相同。即使用同一個種子值重複呼叫RAND() 會返回相同的結果。不指定種子則系統會隨機生成種子。

round(數值表示式[,長度[,操作方式]])

select round(1236.555,2)返回1236.560

select round(1236.555,2,1)返回1236.550

select round(1236.555,0)返回1237.000

select round(1236.555,-1)返回1240.000

select round(1236.555,-1,1)返回1230.000

select round(1236.555,-2)返回1200.000

select round(1236.555,-3)返回1000.000

select round(1236.555,-4)返回0.000

select round(5236.555,-4)出現錯誤

select round(5236.555,-4,1)返回0.000

返回一個數值,舍入到指定的長度。注意返回的數值和原數值

的總位數沒有變化。

長度:舍入精度。如果長度為正數,則將數值舍入到長度指定的小數位數。如果長度為負數,則將數值小數點左邊部分舍入到長度指定的長度。注意如果長度為負數並且大於小數點前的數字個數,則將返回0。如果長度為負數並且等於小數點前的數字個數且操作方式為四捨五入時,最前面的一位小於5 返回 0,大於等於 5 導致錯誤出現,如果操作方法不是四捨五入時則不會出現錯誤,返回結果一律為0。

操作方式:預設為 0 遵循四捨五入,指定其他整數值則直接截斷。

5. 資料型別轉換函式

(以下兩種函式功能類似,但是 convert 在進行日期轉換時還提供了豐富的樣式,cast 只能進行普通的日期轉換)

函式名稱 引數 示例 描述

convert(資料型別[(長度)],表示式[,樣式])

select convert(nvarchar,123) 返回123

select N'年齡:'+convert(nvarchar,23)

返回 年齡:23(注意:如果想要在結果中正確顯示中

文需要在給定的字串前面加上 N,加 N 是為了使資料庫識別Unicode 字元)

select convert(nvarchar ,getdate())

將一種資料型別的表示式顯式轉換為另一種資料型別的表示式。長度:如果資料型別允許設定長度,可以設定長度,例如varchar(10)樣式:用於將日期型別資料轉換為字元資料型別的日期格式的樣式。見下表

返回 04 28 2009 10:21PM

select convert(nvarchar ,getdate(),101)

返回 04/28/2009

select convert(nvarchar ,getdate(),120)

返回 2009-04-28 12:22:21

Select convert(nvarchar(10) ,getdate(),120)

返回 2009-04-28

cast(表示式 as 資料型別[(長度)])

select cast(123 as nvarchar)返回 123

select N'年齡:'+cast(23 as nvarchar)

返回 年齡:23

將一種資料型別的表示式顯式轉換為另一種資料型別的表示式。日期型別資料轉為字元資料型別的日期格式的部分樣式表當兩個不同資料型別的表示式用運算子組合後,資料型別優先順序規則指定將優先順序較低的資料型別優先轉換為優先順序較高的型。 如果此轉換不是所支援的隱式轉換,則返回錯誤。 當兩個運算元表示式具有相同的資料型別時,運算的結果便為該資料型別。如果需要把優先順序高的資料型別轉換優先順序低的資料型別時需要使用資料型別轉換函式進行顯示轉換。

SQL Server 2005 對資料型別使用以下優先順序順序(先高後低):

不帶世紀數位 (yy)

帶世紀數位 (yyyy)

標準

輸入/輸出-

0 或 100

預設設定mon dd yyyy hh:miAM(或 PM)1 101

美國

mm/dd/yyyy 2 102 ANSI yy.mm.dd 3103

英國/法國

dd/mm/yy 4 104

德國

dd.mm.yy 5 105

義大利

dd-mm-yy 120

ODBC 規範

yyyy-mm-ddhh:mi:ss(24h)

1、使用者定義資料型別(最高) 2、sql_variant  3、xml  4、datetime  5、smalldatetime  6、float  7、real  8、decimal  9、money  10、smallmoney 11、bigint  12、int  13、smallint 14、tinyint  15、bit  16、ntext  17、text  18、image  19、timestamp  20、uniqueidentifier

21、nvarchar(包括 nvarchar(max)) 22、nchar  23、varchar (包括 varchar(max)) 24、char  25、varbinary(包括 varbinary(max)) 26、binary(最低)

系統函式

函式名稱 引數 示例 描述

newid無引數

select newid()

返回 2E6861EF-F4DB-4FFE-85EA-638242F2E5F2

select newid()

返回 09BBDE6F-47C2-4E2E-81E8-AFC50592280C

返回一個GUID(全域性唯一表示符)值

isnumeric(任意表達式)

select isnumeric(1111)返回1

select isnumeric('123rr')返回0

select isnumeric('123')返回 1

判斷表示式是否為數值型別或者是否可以轉換成數值。是返回1,不是返回 0

isnull(任意表達式 1,任意表達式 2)

select isnull(null,N'沒有值')返回 沒有值

select isnull(N'具體的值',N'沒有值')

返回 具體的值

如果任意表達式

1 不為 NULL,則返回它的值;否則,在將任意表達式

2 的型別轉換為任意表達式 1 的型別(如果這兩個型別不同)後,返回任意表式

2 的值。

isdate(任意表達式)

select isdate(getdate()) 返回1

select isdate('1988-1-1')返回1

select isdate('198')返回0

確定輸入表示式是否為有效日期或可轉成有效的日期。是返回1,不是返回 0

排名函式

排名函式的常用使用格式:函式名() over (order by 列名 [asc|desc][,列名……])

注意:返回結果集會根據使用排名函式時指定的列進行排序,因此不要在 from 子句後面再次使用 order by,會導致排名混亂。

函式名稱

引數 示例 描述

row_number無引數

select roductID,[Name],ListPrice, row_number()

over(order by ListPrice desc) as rank from Production.Product

為結果集內每一行進行編號,從1開始後面行依次加 1。

rank無引數

select ProductID,[Name],ListPrice,rank()

over(order by ListPrice desc) as rank

from Production.Product

如果兩個或多個行與一個排名關聯,則每個關聯行將得到相同的排名,排名不連續。例如,如果有價格最高的兩種產品的價格相同,它們將列第一。由於已有兩行排名在前,所以具有下一個最高價格的產品將排名第三。該排名等於該行之前的所有行數加一。因此,

RANK 函式並不總返回連續整數。

dense_rank

無引數

select

ProductID,[Name],ListPrice,dense_rank()

over(order by ListPrice desc) as rank

from Production.Product

如果兩個或多個行與一個排名關聯,則每個關聯行將得到相同的排名,排名連續。

例如,如果有價格最高的兩種產品的價格相同,它們將並列第一,下一個最高價

格的產品將排名第二。因此,

DENSE_RANK 函式返回的數字沒有間斷,並且始

終具有連續的排名。

聚合函式

聚合函式對一組值執行計算

,並返回單個值。除了 COUNT 以外,聚合函式都會忽略空值。聚合函式經常與 SELECT 語句的 GROUP BY 子

句一起使用。聚合函式的常用使用格式:函式名([all|distinct] 表示式)

all:預設值,對所有的值進行聚合函式運算包含重複值。distinct: 消

除重複值後進行聚合函式運算。

函式名稱 示例 描述

avg

SELECT avg(VacationHours)as '平均休假小時數'

FROM HumanResources.Employee

WHERE Title LIKE 'Vice President%'

返回 25

返回組中各值的平均值。空值將被忽略。 表示式為數值表示式。

count

SELECT count(*)FROM Production.Product 返回504

SELECT count(Color)FROM Production.Product 返回 256

SELECT count(distinct Color)FROM Production.Product

返回 9

返回組中的項數。COUNT(*) 返回組中的項數。包括 NULL 值和重複項。如果指定

表示式則忽略空值。表示式為任意表達式。

min

select min(ListPrice)from Production.Product返回0

返回組中的最小值。空值將被忽略。表示式為數值表示式,字串表示式,日期。

max

select max(ListPrice) from Production.Product

返回3578.27

返回組中的最大值。空值將被忽略。表示式為數值表示式,字串表示式,日期。

sum

SELECT sum(SickLeaveHours) as '總病假小時數'

FROM HumanResources.Employee

WHERE Title LIKE 'Vice President%'; 返回97

返回組中所有值的和。空值將被忽略。表示式為數值表示式


相關推薦

SQL Server2008函式大全(完整版)

SQL2008 表示式:是常量、變數、列或函式等與運算子的任意組合。 字串函式 函式 名稱 引數 示例 說明 ascii(字串表示式) select ascii(‘abc’) 返回 97 返回字串中最左側的字元的ASCII 碼。 char(整數表示式)

SQL Server2008函式大全

SQL2008 表示式:是常量、變數、列或函式等與運算子的任意組合。 1. 字串函式 函式 名稱 引數 示例 說明 ascii(字串表示式) select ascii('abc') 返回 97 返回字串中最左側的字元的ASCII 碼。 char(整數表示式)

SQL Server 函式大全

SQL Server字串處理函式大全  select語句中只能使用sql函式對欄位進行操作(連結sql server), select 欄位1 from 表1 where 欄位1.IndexOf("雲")=1;這條語句不對的原因是indexof()函式不是sql函式,改成sql對應

sql常用函式大全

BIN(x)   返回x的二進位制(OCT返回八進位制,HEX返回十六進位制)CEILING(x)   返回大於x的最小整數值EXP(x)   返回值e(自然對數的底)的x次方FLOOR(x)   返回小於x的最大整數值GREATEST(x1,x2,...,xn)返回集合中最大的值LEAST(x1,x2,..

Oracle SQL 內建函式大全(轉)

SQL中的單記錄函式 1.ASCII 返回與指定的字元對應的十進位制數;SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A    &n

oracle資料庫 SQL語句、內建函式大全

  1、數值函式      函式      返回值             樣例            顯示     CEIL(n)      大於或等於數值n的最小整數  SELECT CEIL(10.6) FROM TABLE_NAME; 11     FLOO

oracle sql 內建函式大全(1)

sql中的單記錄函式 1.ascii 返回與指定的字元對應的十進位制數;sql> select ascii('a') a,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; a         a     

SQL Server2008常用函式_4. 資料型別轉換函式

4. 資料型別轉換函式 convert 在進行日期轉換時提供了豐富的樣式, cast 只能進行普通的日期轉換 函式名稱 引數 示例 描述 convert(資料型別[(長度)],表示式[,樣式]) select convert(nva

MS-SQL Server字串處理函式大全

  select語句中只能使用sql函式對欄位進行操作(連結sql server), select 欄位1 from 表1 where 欄位1.IndexOf("雲")=1; 這條語句不對的原因是indexof()函式不是sql函式,改成sql對應的函式就可以了。 left(

SQL Server2008附加數據庫之後顯示為只讀時解決方法

這一 -- 技術 false log 美好 使用 com 你會 方案一: 碰到這中情況一般是使用的sa賬戶登錄的,只要改為Windows身份驗證,再附加數據庫即可搞定。 方案二: 使用sa登錄SQL Server2008附加數據庫,附加之後數據庫為只讀的,然後點數據庫

SQL Server2008中通過SQL獲取表結構

nds 數據 join xtend isn val data 運行 order SQL Server2008中通過SQL獲取表結構 新增數據用戶,角色為public。映射到待獲取表結構的數據庫上,授與用戶在該數據庫上的身份為db_owner 運行例如以下SQL語

sql server2008 R2安裝總結

nbsp mman class log use nag lib microsoft ram 1,卸載註意 在卸載Microsoft SQL Server 2008 R2 安裝程序(簡體中文) 出現 :“警告 26003。無法卸載 Microsoft SQL Server

SQL server2008無法收縮日誌

正常的 解決辦法 機器 發現 滿了 tab 網上 邏輯 use SQL server2008無法收縮日誌,錯誤信息為: 1:由於最小日誌空間要求,無法收縮日誌文件 2:無法收縮日誌文件 2 (XXX_log),因為該文件結尾的邏輯日誌文件正在使用 描述: 用的是網上

sql server2008配置管理工具服務顯示遠程過程調用失敗

arc class .dll div ref http ldb body 方法 SQL SERVER2008配置管理工具服務顯示遠程過程調用失敗 前兩天,裝了VS2012後,打開SQL2008配置管理工具,發現SQL服務名稱裏什麽也沒有,只有一個提示:(如圖)   

SQL常用語句大全

price 所有 更新 rom ack 內容 表名 like between 1.插入數據 insert into 表名(列1,列2,列3)values(值1,值2,值3); insert into product(name,price,pic_path) value

【C#學習筆記】讀SQL Server2008

data ext lose tar inf lec area space args using System; using System.Data.SqlClient; namespace ConsoleApplication { class Pro

SQL Server2008安裝教程

png ear sql 操作 繼續 數據 img 設置密碼 services SQL Server2008安裝教程 第一步,打開文件,點擊開始安裝; 第二步,打開後點擊左邊項的安裝,選擇右邊第一項; 第三步,點擊確定; 第四步,選擇接受服務條款,點擊下一步;

SQL Server2008及以上 表分區操作詳解

value 詳細 分享 指令 pos 分割 分區方案 別了 分區   1. 創建分區函數   2. 創建分區方案   3. 對表進行分區   下面將對每個步驟進行詳細介紹。   步驟一:創建一個分區函數   此分區函數用於定義你希望SQL Server如何對數據進行分

win10安裝及卸載SQL Server2008數據庫

color 規則 report 窗體 連接 wid 客戶 無法 正常 一.數據庫安裝環境 操作系統:win10 SQL server:SQL server 2008 R2二.全新數據庫安裝1.安裝擴展文件 雙擊安裝文件,彈出如下窗

Sql Server2008如何讓外網訪問自己的數據庫

分享圖片 配置 外網訪問 serve 技術分享 圖片 .com server bubuko 1、打開 Sql Server配置管理器 2、修改Sql Server網絡配置,將Tcp/IP協議修改為“已啟用” 3、重啟Sql Server服務即可(如果不知道怎麽重啟Sql