字符串函数:操作对象是字符型数据

1.  求字符串字节数:DATALENGTH

语法

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 char(7)
set @str='dufei'
select datalength(@str)


declare @str varchar(7)
set @str='dufei'
select datalength(@str)

 

 

 

 

2. 求字符串长度: LEN

返回给定字符串表达式的字符(而不是字节)个数,其中不包含尾随空格。

一般,一个汉字是一个长度,但占两个字节!

语法

LEN ( string_expression )

参数

string_expression

要计算的字符串表达式。

返回类型

int

示例

下面的示例选定字符个数是求籍贯是北京的姓名及姓名所占的长度。

Select len(姓名),姓名 from yuangong where 籍贯=’北京’

 

declare @abc varchar(10)

set @abc='abc      '

select len(@abc)

 

 

3. 取左子串 LEFT

返回从字符串左边开始指定个数的字符。

语法: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

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

 

 

 

8.字符串替换:REPLACE

用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。

语法: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

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 )

select datediff(day,工作日期,getdate()) from yuangong
select datediff(year,工作日期,getdate()) from yuangong
3、GETDATE
按 datetime 值的 Microsoft? SQL Server? 标准内部格式返回当前系统日期和时间。
语法
GETDATE ( )
返回类型
datetime

 

隐性转换,不行的就要手动转换
转换函数: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)