SQL Server 2005系列教学_ 函数
字符串函数:操作对象是字符型数据
语法
DATALENGTH ( expression )
参数
expression
任何类型的表达式。
返回类型
int
注释
DATALENGTH 对 varchar、varbinary、text、image、nvarchar 和 ntext 数据类型特别有用,因为这些数据类型可以存储可变长度数据。
NULL 的 DATALENGTH 的结果是 NULL。
示例
此示例查找 yuangong 表中 姓名 列的长度。
USE itet
GO
SELECT length = DATALENGTH(姓名), 姓名
FROM YUANGONG
GO
下面是结果集:
6 李逍遥
6 霍玉娟
6 赵灵儿
4 张李
5 ABCDE
6 李春明
4 贾宁
4 杜飞
比较:
|
declare @str varchar(7) set @str='dufei' select datalength(@str)
|
返回给定字符串表达式的字符(而不是字节)个数,其中不包含尾随空格。
一般,一个汉字是一个长度,但占两个字节!
语法
LEN ( string_expression )
参数
string_expression
要计算的字符串表达式。
返回类型
int
示例
下面的示例选定字符个数是求籍贯是北京的姓名及姓名所占的长度。
Select len(姓名),姓名 from yuangong where 籍贯=’北京’
declare @abc varchar(10)
set @abc='abc '
select len(@abc)
返回从字符串左边开始指定个数的字符。
语法:LEFT ( character_expression , integer_expression )
实例:取出‘I Love you!’的最左面 6个字符!
Select Left (‘I Love you!’,6)
下面的示例返回每个书名前15个字符。
USE pubs
GO
SELECT LEFT(title, 15)
FROM titles
GO
4.取右子串:right
返回字符串中从右边开始指定个数的 integer_expression 字符。
语法
RIGHT ( character_expression , integer_expression )
实例:从”中华人民共和国”把共和国三个字取出来!
Select right('中华人民共和国',3)
实例:把yuangong表中每个员工的工作时间取出来,不要日期!
select right(工作日期,7) from itet.. yuangong
5.取子串:SUBSTRING
语法:substring(字符串,开始位置,字符个数)
实例:从yuangong 表中把姓名显示出来后,把部门的第二个字显示出来!
select 姓名,substring(部门,2,1) from yuangong
6.求ASCII值:ASCII
返回字符表达式最左边字符的ASCII值
语法:ASCII(字符串)
实例:求dufei中第一个字符的ASCII值:
Select ascii(‘dufei’)
那我让你求第二个字符U的ASCII,怎么办?
Select ascii(substring(‘dufei’,2,1))
那如果我给定你一个ASCII值让你求出对应的字符怎么办?
7.求字符函数:CHAR
对ASCII值所对应的字符
语法:CHAR(INT)
求65所对应的字符
Select char(65)
制表符 |
CHAR(9) |
换行符 |
CHAR(10) |
回车 |
CHAR(13) |
求每个人的姓名所对应的ASCII值,将再次将ASCII值转换成字母
作业:
declare @str varchar(10),@i int
set @str='dufei'
set @i=1
while @i<=datalength(@str)
begin
select ascii(substring(@str,@i,1)), char(ascii(substring(@str,@i,1)))
set @i=@i+1
end
用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。
语法:REPLACE ( 'string_expression1' , 'string_expression2' , 'string_expression3' )
如:把‘ABCDEF’ 中的CD 换成‘中国’
Select replace('ABCDEF','CD','中国')
9.字符串插入:stuff 从第几位插入,替换几个字符
语法: stuff(串1,n1,n2,串2)
SELECT STUFF('abc', 2, 3, 'xyz')
求每个人的姓名所对应的ASCII值,将再次将ASCII值转换成字母
数值型函数:
1. ABS
1. ABS
2. PI
3. POWER
4. SQRT
下例返回 1.00 到 10.00 之间的数字的平方根。
5.RAND
示例
那如果我想返回0—10之间的随机数:
6.ROUND
正
负
负
日期型函数:
返回日,月,年
select day(getdate()),month(getdate()),year(getdate())
1.DATEADD
在向指定日期加上一段时间的基础上,返回新的 datetime 值。
语法
DATEADD ( datepart , number, date )
让工作日期推迟三天
Select dateadd(day,3,工作日期) as 新工作日期,工作日期 from yuangong
推迟一年呢
Select dateadd(year,1,工作日期) as 新工作日期,工作日期 from yuangong
2、DATEDIFF
返回跨两个指定日期的日期和时间边界数。
语法
DATEDIFF ( datepart , startdate , enddate )
返回跨两个指定日期的日期和时间边界数。
语法
DATEDIFF ( datepart , startdate , enddate )
select datediff(day,工作日期,getdate()) from yuangong
select datediff(year,工作日期,getdate()) from yuangong
3、GETDATE
按 datetime 值的 Microsoft? SQL Server? 标准内部格式返回当前系统日期和时间。
语法
GETDATE ( )
返回类型
datetime
select datediff(year,工作日期,getdate()) from yuangong
3、GETDATE
按 datetime 值的 Microsoft? SQL Server? 标准内部格式返回当前系统日期和时间。
语法
GETDATE ( )
返回类型
datetime
隐性转换,不行的就要手动转换
转换函数:CAST
CAST 语法:cast (表达式 as 新类型)
Cast (123 as varchar(15))
转换函数:CAST
CAST 语法:cast (表达式 as 新类型)
Cast (123 as varchar(15))
用户自定义函数:
标量自定义函数;有一个确定的返回值
格式:create function function_name [inputparameters]
Returns datatype
As
Begin
code
return expression
end
调用 select dbo.函数名
内嵌表函数:
格式:create function function_name(inputprameters)
Returns table
As
Return ( select code)