SqlServer-函數1.0

函數與存儲過程的區別

函數和存儲過程意義和好處都是一樣的。它們的唯一區別就是:存儲過程可以沒有返回值,也可以有多個返回值,適合做批量插入數據、批量更新等。
函數必須有返回值,而且只能有1個,適合做處理數據後返回1個結果。

存儲過程詳情可看存儲過程

系統函數

此處僅列舉了一些常用的系統函數,更多可查看SQL Server2008函數大全
內容取自SQL Server2008函數大全

字符串函數

charindex(字符串表達式 1, 字符串表達式2,[整數表達式])
--例一
select charindex('ab','xcabcd')       --返回 3
--例二
select charindex('ab','LDDbBabD',4)   --返回 6

在字符串2 中查找字符串 1,如果存在返回第一個匹配的位置
如果不存在返回0。如果字符串 1 和字符串 2 中有一個是null 則返回 null。
可以指定在字符串2 中查找的起始位置。及例二中的4
==================================================================
left(字符串表達式,整數表達式)

select left('dsdasdajk',2) 	     --返回 ds

返回字符串中從左邊開始指定個數的字符。
==================================================================
right(字符串表達式,整數表達式)

select right('asdkljasdlas',2)	 --返回 as

返回字符串中從右邊開始指定個數的字符。
==================================================================
len(字符串表達式)

select len('abcdefg')  --返回 7

返回指定字符串表達式的字符數,其中不包含尾隨空格。
==================================================================
lower(字符串表達式)

select lower('ABCDEF')  --返回 abcdef

返回大寫字符數據轉換爲小寫的字符表達式。
==================================================================
upper(字符串表達式)

select upper('abcd')  --返回 ABCD

返回小寫字符數據轉換爲大寫的字符表達式。
==================================================================
ltrim(字符串表達式)

select ltrim('abc')  --返回 abc

返回刪除了前導空格之後的字符表達式。
==================================================================
rtrim(字符串表達式)

select rtrim('abc')  --返回 abc

返回刪除了尾隨空格之後的字符表達式。
==================================================================
reverse(字符串表達式)

select reverse('abcde')  --返回 edcba

返回指定字符串反轉後的新字符串
==================================================================
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 的匹配項。返回新的字符串

日期函數

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

select dateadd(year,45,'1990-12-11') --返回 2035-12-11 00:00:00.000

返回給指定日期加上一個時間間隔後的新的日期值。
數字:用於與指定的日期部分相加的值。如果指定了非整數值,
則將捨棄該值的小數部分,捨棄時不遵循四捨五入。
日期:指定的原日期在此函數中dw,dy,dd 效果一樣都表示天
==================================================================
datediff(日期部分,開始日期,結束日期)

select datediff(yy,'1990-12-11','2008-9-10') --返回 18

返回兩個指定日期的指定日期部分的差的整數值。
在計算時由結束日期減去開始日期
==================================================================
getdate無參數

select getdate() --返回 2020-05-24 08:27:24.153

返回當前系統日期和時間。
==================================================================
day(日期)

select day('2020-5-11')  --返回 11

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

select month('2020-5-11')  --返回 5

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

select year('2020-5-11')  --返回2020

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

數學函數

abs(數值表達式)

select abs(-23.4)  --返回 23.4

返回指定數值表達式的絕對值(正值)
==================================================================
rand([整數表達式])

select rand(100)  --返回0.715436657367485

返回從01 之間的隨機 float 值。
整數表達式爲種子,使用相同的種子產生隨機數相同。
即使用同一個種子值重複調用RAND() 會返回相同的結果。
不指定種子則系統會隨機生成種子。
==================================================================
round(數值表達式[,長度[,操作方式]])

select round(1236.555,2)--返回1236.560

返回一個數值,舍入到指定的長度。注意返回的數值和原數值的總位數沒有變化。
==================================================================
convert(數據類型[(長度)],表達式[,樣式])

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

將一種數據類型的表達式顯式轉換爲另一種數據類型的表達式。

聚合函數

avg

SELECT avg(VacationHours)as '平均休假小時數'
FROM HumanResources.Employee
WHERE Title LIKE 'Vice President%'

返回組中各值的平均值。空值將被忽略。 表達式爲數值表達式。
==================================================================
count

SELECT count(distinct Color)FROM Production.Product

返回組中的項數。COUNT(*) 返回組中的項數。包括 NULL 值和重複項。如果指定
表達式則忽略空值。表達式爲任意表達式。
==================================================================
min

select min(ListPrice)from Production.Product

返回組中的最小值。空值將被忽略。表達式爲數值表達式,字符串表達式,日期。
==================================================================
max

select max(ListPrice) from Production.Product

返回組中的最大值。空值將被忽略。表達式爲數值表達式,字符串表達式,日期。
==================================================================
sum

SELECT sum(SickLeaveHours) as '總病假小時數'
FROM HumanResources.Employee
WHERE Title LIKE 'Vice President%'

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

自定義函數

創建

create function 函數名(--輸入參數)
returns --返回值類型
as
begin
    --代碼塊
end
go

--調用
select dbo.函數名(參數列表)

================================================================
實例:
--創建
go
create function mysex
(
	@sex bit
)
returns varchar(4) --返回的數據類型
as
begin
	declare @rsex varchar(4)
	if @sex=1
		select @rsex='男'
	else
		select @rsex='女'
	return @rsex
end
--調用
go
select *,dbo.mysex(Sex) from Customers

刪除

drop function 函數名

查看

 exec sp_helptext '函數名'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章