zoukankan      html  css  js  c++  java
  • SQL函数

    1.表达式:是常量、变量、列或函数等与运算符的任意组合。以下参数中表达式类型是指表达式经运算后返回的值的类型

    select ascii('abcd')  --返回左边第一个字符的AscII码  输出:97
    select char(97) --把ASCII码转成字符  输出:a
    select charIndex('12','211212') --返回字符串首次出现的位置,从1开始计数 输出:3
    select charIndex('12','56565656') --不存在返回0。 输出:0
    select charindex('12','211212',4) --从位置4开始查找,返回出现的位置 输出:5 
    select difference('12','123') --返回0-4 表示相似度,相似不代表相等 输出:4
    select left('asdfghjk',3) --返回前三个字符  输出:asd
    select right('asdfghj',3) --返回后三个字符 输出:ghj
    select len('as dfghjkl ') --返回字符个数,不包括尾空格 输出10
    select lower('ASDFGHJKL') --转小写 输出:asdfghjkl
    select upper('asdfghjkl') --转大写 输出:ASDFGHJKL
    select Ltrim('    asdfg') --去掉前边空格 输出:asdfg
    select Rtrim('asdfg    ') --去掉后边空格 输出:asdfg
    select patindex('%as%','12as456as789') --前边字符通过后边字符匹配,返回第一个匹配结果 输出:3
    select patindex('as%','12as456as789') --输出 0
    select patindex('__as%','12as456as789') --输出:1
    select patindex('___as%','12as456as789') --输出:0 _匹配一个,%匹配多个字符
    select reverse('asdfgh') --字符串反转 输出hgfdsa
    select 'a' + space(3) +'b' --输出a   b, a,b间加三个空格
    select str(123.456) --输出       123,123前边7个空格
    select str(123.456,7,1) --输出  123.5,前边两个空格
    select str(123.456,5,3) --输出123.5
    select str(123.456,2) --输出** 长度小于整数长度
    select stuff('asdfghj',3,2,1234) --输出:as1234ghj 从位置3开始删除2个字符,用1234替换
    select substring('asdfghjkl',2,2) --输出sd 从位置2开始的两个字符
    select replace('asdfghjkl','df',1234) --输出:as1234ghjkl 用1234替换asdfghjkl中的df
    select round(256.788,0) --四舍五入 输出257.000
    select round(256.788,1) --四舍五入 输出256.800
    select round(256.788,-1) --四舍五入 输出260.000
    select ceiling(12.1) --向上取整 输出13
    select floor(12.1) --向下取整 输出12
    select isNull('字段',参数); --判断字段是否为null,如果是则用参数(类型与字段类型一致)替换null
    View Code

    2.日期和时间函数

     

    select dateadd(year,1,'2000-01-01') --返回 2001-01-01 00:00:00.000
    select dateadd(month,1,'2000-01-01') --返回 2000-02-01 00:00:00.000
    select dateadd(day,1,'2000-01-01') --返回 2000-01-02 00:00:00.000
    select dateadd(dy,1,'2000-01-01') --返回 2000-01-02 00:00:00.000
    select dateadd(dw,1,'2000-01-01') --返回 2000-01-02 00:00:00.000
    select dateadd(dd,1,'2000-01-01') --返回 2000-01-02 00:00:00.000
    select dateadd(mm,1,'2000-01-01') --返回 2000-02-01 00:00:00.000 加一月
    select dateadd(qq,1,'2000-01-01') --返回 2000-04-01 00:00:00.000 加一个季度
    select dateadd(hh,1,'2000-01-01') --返回 2000-01-01 01:00:00.000  小时
    select dateadd(yy,1,'2000-01-01') --返回 2001-01-01 00:00:00.000 加一年
    
    --返回两个指定日期的指定日期部分的差的整数值。
    select datediff(yy,'2000-01-01','1990-12-30') --输出-10 输出时间差,后边减去前边的时间
    select datediff(mm,'2000-01-01','1990-12-30') --输出-109 输出时间差
    select datediff(dd,'2000-01-01','1990-12-30') --输出-3289 输出时间差
    
    --返回表示指定日期的指定日期部分的字符串。
    select datename(yy,'2000-01-01') --输出2000
    select datename(mm,'2000-01-30') --输出01
    select datename(dd,'2000-01-30') --输出30
    select datename(dw,'2000-01-01') --输出 星期六 
    select datename(wk,'2000-01-30') --输出 6 表示第六个星期
    select datename(dy,'2000-03-30') --输出 90 表示第90天
    
    --返回表示指定日期的指定日期部分的整数。 同上
    select datepart(dw,'2000-01-01') --输出7 表示星期六
    
    select getdate() --返回当前时间
    select year('2000-01-30') --输出2000
    select month('2000-01-30') --输出1
    select day('2000-01-30') --输出30
    select getutcdate() --世界标准时间
    View Code

     3.数学函数

    select abs(-15) --输出15 绝对值函数
    select pi()  --输出3.14159265358979
    select cos(pi()/3) --输出0.5
    select sin(pi()/2) --输出1
    select tan(pi()/4) --输出1
    select cot(pi()/4) --输出1
    select acos(0.5) --返回1.0471975511966
    select asin(0.5)--返回 0.523598775598299
    select atan(1) --返回0.785398163397448
    select degrees(pi()/4) --输出45,返回以弧度指定的角的相应角度。
    select radians(180.0) --输出3.1415926535897931  角度的弧度值 
    select exp(4) --输出54.5981500331442 e的幂次e=2.718281...
    select log(exp(1)) --输出1 以e为底的对数
    select log10(100) --输出2 以10为底的对数
    select ceiling(2.365) --输出3 返回大于或等于指定数值表达式的最小整数。
    select floor(2.356) --输出2 返回小于或等于指定数值表达式的最大整数。
    select power(2,3) --输出8 2的3次方
    select sqrt(9) --输出3 开平方
    select sign(9) --输出1 正数返回1,负数返回-1,0返回0
    select rand(5) --返回从 01 之间的随机 float 值。
     --返回一个数值,舍入到指定的长度。注意返回的数值和原数值的总位数没有变化。
    select round(1234.56789,2) --输出 1234.57000
    select round(1234.56789,0) --输出 1235.00000
    View Code

    4.类型转换

    select convert(varchar,23) --输出23
    select N'年龄:' + convert(varchar,23) --输出年龄23,加N是为了使数据库识别 Unicode字符
    select convert(varchar,getdate()) --输出10 7 2013 4:19PM
    select convert(varchar,getdate(),120) --输出2013-10-07 16:20:28
    select convert(varchar(10),getdate(),120) --输出2013-10-07
    
    select cast(123 as varchar) --输出123
    select cast('字段' as '类型')
    View Code

    5.系统函数和聚合函数

    select newid() --返回一个GUID(全局唯一表示符)值
    select isnumeric(123456) --判断表达式是否可以转换成数值,是返回1,否返回0
    select isnull(null,N'没有值') --如果为空返回表达式的值 输出没有值
    select isnull(N'有值',N'没有值') --输出:有值
    select isdate('1988-10-07') --判断表达式是否可以转换成有效日期,是返回1,否返回0
    
    select avg('字段') --返回组中各值的平均值。空值将被忽略。 表达式为数值表达式。
    select count('字段') --返回组中的项数。COUNT(*) 返回组中的项数。包括 NULL 值和重复项
    select max('字段') --返回组中的最大值。空值将被忽略。表达式为数值表达式,字符串表达式,日期。
    select min('字段') --返回组中的最小值。空值将被忽略。表达式为数值表达式,字符串表达式,日期。
    select sum('字段') --返回组中所有值的和。空值将被忽略。表达式为数值表达式
    View Code

     6.数据库分支

    --分支选择
    --CASE搜索函数
    SELECT 编号,
    CASE  
    WHEN 性别='' THEN '1'
    WHEN 性别='' THEN '2'
    ELSE 性别
    END as sex
    FROM CY_renyuan 
    --简单CASE函数(只能判断是否相等,不能写条件)
    SELECT 编号,
    CASE  性别
    WHEN '' THEN '1'
    WHEN '' THEN '2'
    ELSE 性别
    END as sex
    FROM CY_renyuan 
    View Code

    7.集合

    --Union(并集=集合+集合)
    select '1' as 姓名 --列名由第一集合决定
    Union --自动去掉重复值
    select '2' as 编号 --如果此处为'1' 则输出姓名列的值1
    --输出姓名列的值1、2
    
    
    --intersect(交集)
    select '1' as 姓名
    intersect
    select '1' as 编号
    --输出姓名列的值1
    View Code
    要么忍,要么狠,要么滚!
  • 相关阅读:
    海涛老师的面试题作业12打印从1到最大的n位数
    海涛老师的面试题作业28字符串的排列组合问题。
    二叉堆 算法基础篇(一)
    海涛老师的面试题作业5从尾到头打印链表
    关于C++访问控制的理解
    关于STL优先级队列的一些应用
    海涛老师的面试题作业27二叉搜索树与双向链表
    编程之美快速找出满足条件的两个数课后题
    Effective C++ C++虚函数默认参数机制
    变位词程序的设计与实现编程珠玑第二章读后感
  • 原文地址:https://www.cnblogs.com/zxd543/p/3355591.html
Copyright © 2011-2022 走看看