• Sql Server 常用函数


    元数据函数

    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 输出的格式

    Style ID    Style 格式
    100 或者 0       mon dd yyyy hh:miAM (或者 PM)
    101       mm/dd/yy
    102                yy.mm.dd
    103                dd/mm/yy
    104                dd.mm.yy
    105         dd-mm-yy
    106       dd mon yy
    107       Mon dd, yy
    108       hh:mm:ss
    109 或者 9   mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
    110       mm-dd-yy
    111       yy/mm/dd
    112       yymmdd
    113 或者 13   dd mon yyyy hh:mm:ss:mmm(24h)
    114       hh:mi:ss:mmm(24h)
    120 或者 20   yyyy-mm-dd hh:mi:ss(24h)
    121 或者 21   yyyy-mm-dd hh:mi:ss.mmm(24h)
    126       yyyy-mm-ddThh:mm:ss.mmm(没有空格)
    130       dd mon yyyy hh:mi:ss:mmmAM
    131       dd/mm/yy hh:mi:ss:mmmAM

    使用:select convert(int,123)

  • 相关阅读:
    editplus 快捷键
    python 堆栈
    python 矩阵转置
    python 单向链表
    python 读空的json文件
    c++ 结构体
    手把手教你如何利用Meterpreter渗透Windows系统
    vuejs npm chromedriver 报错
    强大的开源网络侦查工具:IVRE
    在vue 中使用Stylus
  • 原文地址:https://www.cnblogs.com/Khadron/p/SQL_FUNCTION.html
Copyright © 2020-2023  润新知