您的位置:首页 > 数据库

SQL Server 2005系列教学(10) 函数

2008-06-08 12:59 459 查看
字符串函数:[/b]操作对象是字符型数据
1.求字符串字节数:DATALENGTH
语法
DATALENGTH(expression)
参数
expression
任何类型的表达式。
返回类型
int
注释
DATALENGTH对varchar、varbinary、text、image、nvarchar和ntext数据类型特别有用,因为这些数据类型可以存储可变长度数据。
NULL的DATALENGTH的结果是NULL。

示例
此示例查找yuangong表中姓名列的长度。

USEitet
GO
SELECTlength=DATALENGTH(姓名),姓名
FROMYUANGONG
GO
下面是结果集:
6李逍遥
6霍玉娟
6赵灵儿
4张李
5ABCDE
6李春明
4贾宁
4杜飞
比较:



declare@strchar(7)
set@str='dufei'
selectdatalength(@str)


[align=left]
declare@strvarchar(7)
[/align]
[align=left]
set@str='dufei'
[/align]
[align=left]
selectdatalength(@str)
[/align]
2.求字符串长度:LEN
返回给定字符串表达式的字符(而不是字节)个数,其中不包含尾随空格。
一般,一个汉字是一个长度,但占两个字节!
语法
LEN(string_expression)
参数
string_expression
要计算的字符串表达式。
返回类型
int
示例
下面的示例选定字符个数是求籍贯是北京的姓名及姓名所占的长度。
Selectlen(姓名),姓名fromyuangongwhere籍贯=’北京’

declare@abcvarchar(10)
set@abc='abc'
selectlen(@abc)

3.取左子串LEFT
返回从字符串左边开始指定个数的字符。
语法:LEFT(character_expression,integer_expression)
实例:取出‘ILoveyou!’的最左面6个字符!
SelectLeft(‘ILoveyou!’,6)

下面的示例返回每个书名前15个字符。
USEpubs
GO
SELECTLEFT(title,15)
FROMtitles
GO

4.取右子串:right
RIGHT
返回字符串中从右边开始指定个数的integer_expression字符。
语法
RIGHT(character_expression,integer_expression)
实例:从”中华人民共和国”把共和国三个字取出来!
Selectright('中华人民共和国',3)
实例:把yuangong表中每个员工的工作时间取出来,不要日期!
selectright(工作日期,7)fromitet..yuangong

5.取子串:SUBSTRING
语法:substring(字符串,开始位置,字符个数)
实例:从yuangong表中把姓名显示出来后,把部门的第二个字显示出来!
select姓名,substring(部门,2,1)fromyuangong

6.求ASCII值:ASCII
返回字符表达式最左边字符的ASCII值
语法:ASCII(字符串)
实例:求dufei中第一个字符的ASCII值:
Selectascii(‘dufei’)
那我让你求第二个字符U的ASCII,怎么办?
Selectascii(substring(‘dufei’,2,1))
那如果我给定你一个ASCII值让你求出对应的字符怎么办?

7.求字符函数:CHAR
对ASCII值所对应的字符
语法:CHAR(INT)
求65所对应的字符
Selectchar(65)

[align=left]制表符[/align][align=left]CHAR(9)[/align]
[align=left]换行符[/align][align=left]CHAR(10)[/align]
[align=left]回车[/align][align=left]CHAR(13)[/align]
求每个人的姓名所对应的ASCII值,将再次将ASCII值转换成字母
作业:
declare@strvarchar(10),@iint
set@str='dufei'
set@i=1
while@i<=datalength(@str)
begin
selectascii(substring(@str,@i,1)),char(ascii(substring(@str,@i,1)))
set@i=@i+1
end

8.字符串替换:REPLACE
用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。
语法:REPLACE('string_expression1','string_expression2','string_expression3')
如:把‘ABCDEF’中的CD换成‘中国’
Selectreplace('ABCDEF','CD','中国')

9.字符串插入:stuff从第几位插入,替换几个字符
语法:stuff(串1,n1,n2,串2)
[align=left]SELECTSTUFF('abc',2,3,'xyz')[/align]

求每个人的姓名所对应的ASCII值,将再次将ASCII值转换成字母

数值型函数:
1.ABS
2.PI
3.POWER
4.SQRT

下例返回1.00到10.00之间的数字的平方根。

5.RAND

示例

那如果我想返回0—10之间的随机数:
6.ROUND



日期型函数:

返回日,月,年
selectday(getdate()),month(getdate()),year(getdate())
1.DATEADD
在向指定日期加上一段时间的基础上,返回新的datetime值。
语法
DATEADD(datepart,number,date)
让工作日期推迟三天
Selectdateadd(day,3,工作日期)as新工作日期,工作日期fromyuangong
推迟一年呢
Selectdateadd(year,1,工作日期)as新工作日期,工作日期fromyuangong
2、DATEDIFF
返回跨两个指定日期的日期和时间边界数。
语法
DATEDIFF(datepart,startdate,enddate)
selectdatediff(day,工作日期,getdate())fromyuangong
selectdatediff(year,工作日期,getdate())fromyuangong
3、GETDATE
按datetime值的Microsoft?SQLServer?标准内部格式返回当前系统日期和时间。
语法
GETDATE()
返回类型
datetime

隐性转换,不行的就要手动转换
转换函数:CAST
CAST语法:cast(表达式as新类型)
Cast(123asvarchar(15))

用户自定义函数:[/b]

标量自定义函数;有一个确定的返回值
格式:createfunctionfunction_name[inputparameters]
Returnsdatatype
As
Begin
code
returnexpression
end

调用selectdbo.函数名

内嵌表函数:
格式:createfunctionfunction_name(inputprameters)
Returnstable
As
Return(selectcode)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息