码迷,mamicode.com
首页 > 数据库 > 详细

Sql Server 常用函数

时间:2016-05-25 20:29:06      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:

元数据函数

DB_ID
获取数据库唯一标识,是服务器上的唯一标识
语法结构 :DB_ID([‘database_name‘])
参数说明 :database_name是数据库名称,为可选参数。如果没有指定则返回当前所在数据库的ID
返回值:int类型的数据库标识符
使用:SELECT DB_ID();

DB_NAME
获取当前数据库的名称
语法结构 :DB_NAME([‘database_id‘])
参数说明 :database_id为可选参数,是数据库的id,可由DB_ID函数获得、如果没有指定则返回当前所在数据库的名称
返回值 :数据库名称
使用 :SELECT DB_NAME();

OBJECT_ID
获取数据库对象标识符,是数据库中的唯一标识
语法结构 :OBJECT_ID(‘[database_name.[schema_name].|schema_name .]object_name‘[,‘object_type‘])
参数说明:

名称 说明 是否可选
database_name 数据库名称 可选
schema_name 架构名称 可选
object_name 对象名称 必选
object_type 对象类型 可选
返回值:int类型的对象标识符
使用:
IF OBJECT_ID(N‘dbo.User‘,N‘U‘) IS NOT NULL
DROP TABLE dbo.User;
GO

OBJECT_NAME
获取数据库对象名称
语法结构 :OBJECT_NAME(object_id)
参数说明 :object_id是数据库对象的id,可用OBJECT_ID获得
返回值 :数据库对象名称

OBJECTPROPERTY
获得指定数据库、指定对象的指定属性值。
语法结构 :OBJECTPROPERTY(id,property)
参数说明:
id表示为指定的数据库、对象的id
property表示要返回的属性

常见的property属性值

属性值 说明 返回值
TableHasTextImage 表中是否含有text、image数据类型的列 int   1表示true 0表示false
TableHasPrimaryKey 表中是否含有主键 int   1表示true 0表示false
TableHasIndex 表中是否含有索引 int   1表示true 0表示false
TableHasForeignKey 表中是否含有外键 int   1表示true 0表示false
SchemaId 对象的架构Id int
OwnerId 对象所有者 int
IsView 是否是视图 int   1表示true 0表示false
IsUserTable 是否是用户创建的表 int   1表示true 0表示false
IsTable 是否是表 int   1表示true 0表示false
IsSystemTable 是否是系统表 int   1表示true 0表示false
IsPrimaryKey 是否是主键 int   1表示true 0表示false

聚合函数

AVG
计算映射集平均值,如果参数值为NULL则这一行会被忽略计算
语法结构 :AVG([all | distinct] expression)
参数说明 :
all:为默认值,标识对所有的数据都计算平均值
distinct:去重,相同值仅作为一次计算
expression: 表达式(列)。表达式内部不允许使用子查询和其他聚合函数。
使用:select ave(age) from student

MIN
计算映射集最小值,可用于numeric、char、varchar或datetime、money或smallmoney列,但不能用于bit列,忽略null值
语法结构 :MIN([all | distinct] expression)
参数说明 :同AVG
使用:select min(avg) from student

MAX
计算映射集中最大值。和MIN函数一样,可用于numeric、char、varchar或datetime、money或smallmoney列,但不能用于bit列,忽略null值
语法结构:MAX([all | distinct] expression)
参数说明:同AVG
使用:select max(age) from student

SUM
用于求和,只能用于数字类型(bit类型除外),忽略null值
语法结构:SUM([all | distinct] expression)
参数说明:同AVG
使用:select sum(grade) from class

COUNT
用于计算满足条件的数据项的个数
语法结构:COUNT([[all | distinct] expression] | *)
参数说明:expression是除text、image或ntext以外任何的表达式,但不允许是聚合函数和子查询
使用:
count(*) 返回所有的列项数,包括含NULL和重复项的列
count(all expression) 返回非NULL值的列的个数
count(distinct expression) 返回唯一非NULL值的列的个数

STDEV
计算标准偏差
语法结构:STDEV([all | distinct] expression)
参数说明:expression必须是一个数值类型的表达式(不包括bit类型),不允许使用聚合函数和子查询,忽略null值
使用:select stdev(age) from student

VAR
计算方差
语法结构:VAR([all | distinct] expression)
参数说明:同STDEV
使用:select var(age) from student

数学函数
ABS
计算绝对值
语法结构:ABS(expression)
参数说明:expression必须是一个数值类型的表达式(bit类型除外)
使用:select abs(-1)

CELLING
获取大于等于最小整数值。俗称天花板函数,尽量往最大的取整。
语法结构:CELLING(expression)
参数说明:同ABS
使用:select celling(15.2) --输出16

FLOOR
获取小于等于最大整数值。与CELLING函数相对,俗称地板函数,尽量往最小的取整
语法结构:FLOOR(expression)
参数说明:同ABS
使用:select floor(15.6) --输出15

ROUND
获取指定长度和精度的数值
语法结构:ROUND(expression,length[, function])
参数说明:
expression 数值表达式
length 舍入的精度。正数-保留小数点后几位;负数保留小数点前几位
function 截断小数。值为tinyint、smallint或int。值省略或为0则进行舍入。如果指定了0以为的值则截断小数
使用:
select round(123.666,0) --124.00
select round(123.66,0,1) --123.00

RAND
返回0到1之间的浮点数
语法结构: RAND([seed])
参数说明:seed是种子值,是一个整数类型(tinyint、smallint、int)的表达式。
使用:select rand()

字符串函数

ASCII
获取指定字符的ASCII编码
语法结构:ASCII(expression)
参数说明:expression是一个char或varchar类型的表达式。
使用:select ascii(‘k’) --107

CHAR
ASCII函数的逆操作,通过ASCII码获得相应的字符
语法结构:CHAR(integer_expression)
参数说明:integer_expression是一个整数类型的表达式
使用:select char(107) --k

Unicode
获取指定字符的Unicode编码
语法结构:Unicode(expression)
参数说明:expression是一个nchar或nvarchar类型的表达式
使用: select unicode(‘k’)

NCHAR
Unicode函数的逆操作,通过Unicode码来获得相应的字符
语法结构:NCHAR(integer_expression)
参数说明:integer_expression是一个整数类型的表达式
使用: select nchar(107)

PatIndex
获取字符串第一次出现的位置,没有匹配到的话则返回0
语法结构:PatIndex(‘%pattern%’,expression)
参数说明:
pattern:可以是一个字符串,也可以使用通配符。如果使用通配符则需要配对
expression:字符表达式
返回值:如果expression数据类型为varchar(max)或nvarchar(max)则为bigint,否则为int
使用:select patindex(‘%llo%’,’hello world!’)

SPACE
生成空格
语法结构:SPACE(integer_expression)
参数说明:integer_expression表示生成几个空格
使用: select space(3)

REPLICATE
按指定的次数重复生成一个字符串
语法结构:REPLICATE(character_expression,integer_expression)
参数说明:
character_expression 要生成的字符串
integer_expression 生成的次数
使用: select replicate(‘hello’,5)

SUBSTRING
对字符串进行截取,索引从1开始
语法结构:SUBSTRING(expression,start,length)
参数说明:
expression  可以是字符串、二进制字符串、文本、图像或包含列的表达式,但不能使用聚合函数的表达式
start 指定子字符串开始位置
length 返回字符的个数,不能为负数
返回值:
如果expression是受支持的字符数据类型,则返回字符数据;如果expression是受支持的binary数据类型,则返回二进制数据
使用: select substring(‘hello’,1,2)

LEN
获取字符串的长度,但不包括右边的空格。
语法结构:LEN(string_expression)
参数说明:要计算长度的字符串
返回值:expression数据类型为varchar(max)、nvarchar(max)或varbinary(max)则为bigint。否则为int
使用: select LEN(‘王尼玛’)

STUFF
在指定的字符串中删除指定长度的字符串,并在起点处插入另外一组字符
语法结构:STUFF(source_character_expression,start,length,destination_character_expression)
参数说明:
source_character_expression 源字符串。可以是常量、变量,也可以是字符列或二进制数据列
start 指定删除和插入的开始位置。如果start或length为负数,则返回空字符串。如果start比源字符串长,则返回空字符串
length 指定要删除的字符个数。如果length比源字符串长,则全部删除
destination_character_expression 要插入的新字符串。可以是常量、变量,也可以是字符列或二级制数据列
使用: select stuff(‘abcdef’,3,2,‘111’)  --ab111ef

CHARINDEX
用于在指定的字符串中搜索特定的字符串,并可以指定开始搜索的位置,返回第一次找到目标字符的位置
语法结构:CHARINDEX(expression1,expression2[,start_location])
参数说明:
expression1 要查找的字符串的表达式
expression2 指定搜索的字符串表达式,可以是字符列
start_location 搜索的字符串的搜索位置。如果值为负数或零,则从开头搜索
返回值: 如果expression2的数据类型为varchar(max)、nvarchar(max)或varbinary(max),则为bigint。否则为int
使用: select charindex(‘wc’,’wk wr wc’,2)

QUOTENAME
生成带有分隔符的Unicode字符串
语法结构:QUOTENAME(‘character_string’[, ‘quote_character’])
参数说明:
character_string:Unicode字符串
quote_character:用作分隔符的单字符串,默认的话为“[]”
返回值:nvarchar(258)
使用:
select quotename(‘hello’) --[hello]
select quotename(‘hello’,’|’)  --|hello|

STR
用于将浮点数转换为字符串
语法结构:STR(float_expression [,length[,decimal]])
参数说明:
float_expression 浮点数值的表达式
length 总长度。它包括小数点、符号、数字及空格。默认值为10
decimal 小数点后的位数。decimal必须小于或等于16,如果大于16则会截断结果
返回值:char
使用:
select str(123.987) –124 str函数会自动四舍五入
select str(123.987,6) –两空格 +124 因为decimal没有指定,所以自动填充空格
select str(123.987,6,4)--123.99

LEFT
截取左边字符串,效果等同于SUBSTRING(expression,1,length)
语法结构:LEFT(character_expression,integer_expression)
参数说明:
character_expression 字符串或二进制表达式,可以是常量、变量或表达式。
integer_expression 正整数,指定返回的字符数
返回值:varchar或nvarchar
使用:select left(‘wow’,2) --wo

RIGHT
截取右边字符串,效果等同于SUBSTRING(expression,LEN(expression)-length+1,length)
语法结构:RIGHT(character_expression,integer_expression)
参数说明:同LEFT函数
返回值:同LEFT函数
使用: select right(‘wow’,2) –w

LTRIM
用于清除左边空格字符
语法结构:LTRIM(character_expression)
参数说明:character_expression 为字符或二进制数据表达式,可以使常量、变量或数据列
返回值:varchar或nvarchar字符串
使用: select ltrim(‘   123’)

RTRIM
用于清除右边空格字符
语法结构:RTRIM(character_expression)
参数说明:同LTRIM
返回值:同LTRIM
使用: select rtrim(‘123   ’)

LOWER
将指定字符串全部转换成小写字符
语法结构:LOWER(character_expression)
参数说明:character_expression 为字符或二进制数据表达式,可以使常量、变量或数据列
返回值:varchar或nvarchar字符串
使用: select lower(‘aBc’)  --abc

UPPER
将指定字符串全部转换成大写字符
语法结构:UPPER(character_expressiion)
参数说明:同LOWER
返回值:同LOWER
使用:select upper(‘aBc’) –ABC

REVERSE
反转(反序)指定字符串
语法结构:REVERSE(character_expression)
参数说明:character_expression 为字符或二进制数据表达式,可以使常量、变量或数据列
返回值:varchar或nvarchar字符串
使用: select reverse(‘abc’) –cba

DATALENGTH
获取指定字符串的字节数。它不仅适合字符串类型数据,还适合文本(text、ntext)、二进制数据(varbinary、binary)和图像(image)等任意类型的数据。
语法结构:DATALENGTH(expression)
返回值:如果expression数据类型为varchar(max)、nvarchar(max)或varbinary(max)数据类型,则返回bigint。否则返回int
使用:select datalength(‘我’) –2

SOUNDEX
返回一个由四个字符组成的代码,用于评估两个字符串的相似性
语法结构:SOUNDEX(‘character’)
使用:
select soundex(‘abcde’) --A120
select soundex(‘abcdf’)  --A122

DIFFERENCE
返回一个整数值,用来表示两个字符表达式的SOUNDEX值之间的差异
语法结构:DIFFERENCE(expression1,expression2)
使用:select difference(‘abc’,’abf’)

REPLACE
在指定的字符串中替换指定的字符
语法结构:REPLACE(string_expression1,string_expression2,string_expression3)
参数说明:
string_expression1 要搜索的字符串表达式。可以是字符或二进制数据值
string_expression2 要查找的字符串。可以是字符或二进制数据值
string_expression3 要替换的字符串。可以是字符或二进制数据值
使用: select replace(‘ab’,’abcdef’,’H’)

日期时间函数

GETDATE
获取当前Sql Server服务器的日期和时间
使用: select getdate()

GETUTCDATE
获取当前Sql Server服务器的UTC时间
使用: select getutcdate()

YEAR
获取日期的年份信息
语法结构:YEAR(date)
参数说明:date可以为time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表达式
使用:select year(‘2012’)

MONTH
获取日期的月份信息
语法结构:MONTH(date)
参数说明:同YEAR
使用:select month(‘2012-05’)

DAY
获取日期的天份信息
语法结构:DAY(date)
参数说明:同YEAR
使用:select day(‘2012-05-20’)

DATEPART
返回指定日期时间的指定部分值
语法结构:DATEPART(datepart,date)
参数说明:
datepart 指定日期时间输出格式代码

说明 取值
返回年度信息 Year、YYYY、YY
返回月份信息 Month、MM、M
返回日期信息 Day、DD、D
返回周信息 Week、WK、WW
返回每周星期几信息 WeekDay、DW
返回季度信息 Quarter、QQ、Q
返回一年中第几天的信息 DayOfYear、DY、Y
返回小时信息 Hour、HH
返回分钟信息 Minute、MI、N
返回秒信息 Second、SS、S
返回毫秒信息 MillSecond、MS

返回值:int类型日期时间格式
使用: select datepart(yy,getdate())

DATENAME
返回指定日期时间格式的字符串,和DATEPART函数一样,只不过返回值为字符类型
使用:select datename(yy,getdate())

DATEADD
将某个日期加上一个指定整数值,得到一个新的datetime类型的数据
语法结构:DATEADD(datepart,numerical,date)
参数说明:
numerical 要相加的值,必须是整数,如果是小数则保留整数
date 为time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表达式、列表达式、用户定义的变量或字符串
datepart 日期时间输出格式代码
使用:select dateadd(yyyy,’2012-05-06’,’2013-05-06’)

DATEDIFF
将两个日期按照特定的时间格式相减,得到一个新的datetime类型的数据
语法结构:DATEDIFF(datepart,startdate,enddate)
参数说明:
startdate 为time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表达式、列表达式、用户定义的变量或字符串
enddate  为time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表达式、列表达式、用户定义的变量或字符串
datepart 日期时间输出格式代码
使用:select datediff(yyyy,’2012-05-06’,’2013-05-06’)

类型转换函数

CAST 和CONVERT它们的功能是相同的,只是语法不同
CAST
语法结构:CAST(expression as date_type)
参数说明:expression 要转换的表达式
使用:select cast(‘123’ as int)

CONVERT
语法结构:CONVERt(data_type(length),expression,style)
参数说明:
data_type(length) 数据类型
expression 要转换的值
style 输出的格式
使用:select convert(int,123)

Sql Server 常用函数

标签:

原文地址:http://www.cnblogs.com/kongQ/p/5528181.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!