字符串函数:
操作对象是字符型数据
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)
本文出自 “杜飞” 博客,转载请与作者联系!