mysql函数 订阅
MySQL函数,是一种控制流程函数,属于数据库用语言。 展开全文
MySQL函数,是一种控制流程函数,属于数据库用语言。
信息
外文名
MySQL function
包    含
IF 函数
中文名
MySQL函数
性    质
控制流程函数
MySQL函数控制流程函数
a) CASE WHEN THEN 函数 [1]  语法:CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ……] [ELSE result ]ENDCASE WHEN [condition] THEN result [WHEN[condition] THEN result ……] [ELSE result] END ;函数用法说明:在第一个方案中, 当满足条件value =compare-value 时,返回对应的result,否则返回ELSE后的result。在第二个方案中,当满足条件condition时,返回对应的result,否则返回ELSE后的result。两种方案中,如果都不满足而且如果没有ELSE 部分,则返回值为NULLb) IF 函数用法语法: IF(expr1,expr2,expr3)函数用法说明:如果 expr1 是 TRUE (expr1 <> 0 and expr1 <> NULL) ,则 IF() 的返回值为 expr2 ; 否则返回值则为 expr3 。 IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定c) IFNULL 函数语法: IFNULL(expr1,expr2)函数用法说明:假如 expr1 不为 NULL ,则 IFNULL() 的返回值为 expr1 ; 否则其返回值为 expr2 。 IFNULL() 的返回值是数字或是字符串,具体情况取决于其所使用的语境d) NULLIF函数语法:NULLIF(expr1,expr2)函数用法说明:NULLIF()函数将会检验提供的2个参数是否相等,如果相等,则返回NULL,如果不相等就返回第一个参数。
收起全文
精华内容
下载资源
问答
  • Re: MySQL 函数、用户自定义函数  ============================== # MySQL 函数的意义 MySQL 自身提供大量功能强大、方便易用的函数。使用这些函数,可以极大地提高用户对数据库的管理效率。   # 函数的...
  • MySQL常用函数MySQL 数值型函数MySQL 字符串函数MySQL 日期和时间函数MySQL 聚合函数MySQL 流程控制函数1、字符串函数2、数学函数3、时期时间函数4、转换函数 MySQL 函数会对传递进来的参数进行处理,并返回一个...

    在这里插入图片描述
    MySQL 函数会对传递进来的参数进行处理,并返回一个处理结果,也就是返回一个值。
    MySQL 包含了大量并且丰富的函数,这套 MySQL 函数大全只收集了几十个常用的,剩下的比较罕见的函数我们就不再整理了,读者可以到「MySQL 官网」查询。
    可以对 MySQL 常用函数进行简单的分类,大概包括数值型函数、字符串型函数、日期时间函数、聚合函数等。

    MySQL 数值型函数

    函数名称作 用
    ABS求绝对值
    SQRT求二次方根
    MOD求余数
    CEIL 和 CEILING 两个函数功能相同,都是返回不小于参数的最小整数,即向上取整
    FLOOR向下取整,返回值转化为一个BIGINT
    RAND生成一个0~1之间的随机数,传入整数参数是,用来产生重复序列
    ROUND对所传参数进行四舍五入
    SIGN返回参数的符号
    POW和 POWER 两个函数的功能相同,都是所传参数的次方的结果值
    SIN求正弦值
    ASIN求反正弦值,与函数 SIN 互为反函数
    COS求余弦值
    ACOS求反余弦值,与函数 COS 互为反函数
    TAN求正切值
    ATAN求反正切值,与函数 TAN 互为反函数
    COT求余切值

    MySQL 字符串函数

    函数名称作 用
    LENGTH计算字符串长度函数,返回字符串的字节长度
    CONCAT合并字符串函数,返回结果为连接参数产生的字符串,参数可以使一个或多个
    INSERT替换字符串函数
    LOWER将字符串中的字母转换为小写
    UPPER将字符串中的字母转换为大写
    LEFT从左侧字截取符串,返回字符串左边的若干个字符
    RIGHT从右侧字截取符串,返回字符串右边的若干个字符
    TRIM删除字符串左右两侧的空格
    REPLACE字符串替换函数,返回替换后的新字符串
    SUBSTRING截取字符串,返回从指定位置开始的指定长度的字符换
    REVERSE字符串反转(逆序)函数,返回与原始字符串顺序相反的字符串

    MySQL 日期和时间函数

    函数名称作 用
    CURDATE和 CURRENT_DATE 两个函数作用相同,返回当前系统的日期值
    CURTIME和 CURRENT_TIME 两个函数作用相同,返回当前系统的时间值
    NOW和 SYSDATE 两个函数作用相同,返回当前系统的日期和时间值
    UNIX_TIMESTAMP获取UNIX时间戳函数,返回一个以 UNIX 时间戳为基础的无符号整数
    FROM_UNIXTIME将 UNIX 时间戳转换为时间格式,与UNIX_TIMESTAMP互为反函数
    MONTH获取指定日期中的月份
    MONTHNAME获取指定日期中的月份英文名称
    DAYNAME获取指定曰期对应的星期几的英文名称
    DAYOFWEEK获取指定日期对应的一周的索引位置值
    WEEK获取指定日期是一年中的第几周,返回值的范围是否为 0〜52 或 1〜53
    DAYOFYEAR获取指定曰期是一年中的第几天,返回值范围是1~366
    DAYOFMONTH获取指定日期是一个月中是第几天,返回值范围是1~31
    YEAR获取年份,返回值范围是 1970〜2069
    TIME_TO_SEC将时间参数转换为秒数
    SEC_TO_TIME将秒数转换为时间,与TIME_TO_SEC 互为反函数
    DATE_ADD和 ADDDATE 两个函数功能相同,都是向日期添加指定的时间间隔
    DATE_SUB和 SUBDATE 两个函数功能相同,都是向日期减去指定的时间间隔
    ADDTIME时间加法运算,在原始时间上添加指定的时间
    SUBTIME时间减法运算,在原始时间上减去指定的时间
    DATEDIFF获取两个日期之间间隔,返回参数 1 减去参数 2 的值
    DATE_FORMAT格式化指定的日期,根据参数返回指定格式的值
    WEEKDAY获取指定日期在一周内的对应的工作日索引

    MySQL 聚合函数

    函数名称作 用
    MAX查询指定列的最大值
    MIN查询指定列的最小值
    COUNT统计查询结果的行数
    SUM求和,返回指定列的总和
    AVG求平均值,返回指定列数据的平均值

    MySQL 流程控制函数

    函数名称作 用
    IF判断,流程控制
    IFNULL判断是否为空
    CASE搜索语句

    1、字符串函数

    ascii(str)
    返回字符串str的第一个字符的ascii值(str是空串时返回0)
    mysql> select ascii(‘2’);
      -> 50
    mysql> select ascii(2);
      -> 50
    mysql> select ascii(‘dete’);
      -> 100

    ord(str)
    如果字符串str句首是单字节返回与ascii()函数返回的相同值。

    如果是一个多字节字符,以格式返回((first byte ascii code)*256+(second byte ascii code))[*256+third byte asciicode…]
    mysql> select ord(‘2’);
      -> 50

    conv(n,from_base,to_base)
    对数字n进制转换,并转换为字串返回(任何参数为null时返回null,进制范围为2-36进制,当to_base是负数时n作为有符号数否则作无符号数,conv以64位点精度工作)
    mysql> select conv(“a”,16,2);
      -> ‘1010’
    mysql> select conv(“6e”,18,8);
      -> ‘172’
    mysql> select conv(-17,10,-18);
      -> ‘-h’
    mysql> select conv(10+“10”+‘10’+0xa,10,10);
      -> ‘40’

    bin(n)
    把n转为二进制值并以字串返回(n是bigint数字,等价于conv(n,10,2))
    mysql> select bin(12);
      -> ‘1100’

    oct(n)
    把n转为八进制值并以字串返回(n是bigint数字,等价于conv(n,10,8))
    mysql> select oct(12);
      -> ‘14’

    hex(n)
    把n转为十六进制并以字串返回(n是bigint数字,等价于conv(n,10,16))
    mysql> select hex(255);
      -> ‘ff’

    char(n,…)
    返回由参数n,…对应的ascii代码字符组成的一个字串(参数是n,…是数字序列,null值被跳过)
    mysql> select char(77,121,83,81,‘76’);
      -> ‘mysql’
    mysql> select char(77,77.3,‘77.3’);
      -> ‘mmm’

    concat(str1,str2,…)
    把参数连成一个长字符串并返回(任何参数是null时返回null)
    mysql> select concat(‘my’, ‘s’, ‘ql’);
      -> ‘mysql’
    mysql> select concat(‘my’, null, ‘ql’);
      -> null
    mysql> select concat(14.3);
      -> ‘14.3’

    length(str)
    octet_length(str)
    char_length(str)
    character_length(str)
    返回字符串str的长度(对于多字节字符char_length仅计算一次)
    mysql> select length(‘text’);
      -> 4
    mysql> select octet_length(‘text’);
      -> 4

    locate(substr,str)
    position(substr in str)
    返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0)
    mysql> select locate(‘bar’, ‘foobarbar’);
      -> 4
    mysql> select locate(‘xbar’, ‘foobar’);
      -> 0

    locate(substr,str,pos)
    返回字符串substr在字符串str的第pos个位置起第一次出现的位置(str不包含substr时返回0)
    mysql> select locate(‘bar’, ‘foobarbar’,5);
      -> 7

    instr(str,substr)
    返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0)
    mysql> select instr(‘foobarbar’, ‘bar’);
      -> 4
    mysql> select instr(‘xbar’, ‘foobar’);
      -> 0

    lpad(str,len,padstr)
    用字符串padstr填补str左端直到字串长度为len并返回
    mysql> select lpad(‘hi’,4,’??’);
      -> ‘??hi’

    rpad(str,len,padstr)
    用字符串padstr填补str右端直到字串长度为len并返回
    mysql> select rpad(‘hi’,5,’?’);
      -> ‘hi???’

    left(str,len)
    返回字符串str的左端len个字符
    mysql> select left(‘foobarbar’, 5);
      -> ‘fooba’

    right(str,len)
    返回字符串str的右端len个字符
    mysql> select right(‘foobarbar’, 4);
      -> ‘rbar’

    substring(str,pos,len)
    substring(str from pos for len)
    mid(str,pos,len)

    返回字符串str的位置pos起len个字符mysql> select substring(‘quadratically’,5,6);
      -> ‘ratica’

    substring(str,pos)
    substring(str from pos)

    返回字符串str的位置pos起的一个子串
    mysql> select substring(‘quadratically’,5);
      -> ‘ratically’
    mysql> select substring(‘foobarbar’ from 4);
      -> ‘barbar’

    substring_index(str,delim,count)
    返回从字符串str的第count个出现的分隔符delim之后的子串
    (count为正数时返回左端,否则返回右端子串)
    mysql> select substring_index(‘www.mysql.com’, ‘.’, 2);
      -> ‘www.mysql’
    mysql> select substring_index(‘www.mysql.com’, ‘.’, -2);
      -> ‘mysql.com’

    ltrim(str)
    返回删除了左空格的字符串str
    mysql> select ltrim(’ barbar’);
      -> ‘barbar’

    rtrim(str)
    返回删除了右空格的字符串str
    mysql> select rtrim('barbar ');
      -> ‘barbar’

    trim([[both | leading | trailing] [remstr] from] str)
    返回前缀或后缀remstr被删除了的字符串str(位置参数默认both,remstr默认值为空格)
    mysql> select trim(’ bar ');
      -> ‘bar’
    mysql> select trim(leading ‘x’ from ‘xxxbarxxx’);
      -> ‘barxxx’
    mysql> select trim(both ‘x’ from ‘xxxbarxxx’);
      -> ‘bar’
    mysql> select trim(trailing ‘xyz’ from ‘barxxyz’);
      -> ‘barx’

    soundex(str)
    返回str的一个同音字符串(听起来“大致相同”字符串有相同的
    同音字符串,非数字字母字符被忽略,在a-z外的字母被当作元音)
    mysql> select soundex(‘hello’);
      -> ‘h400’
    mysql> select soundex(‘quadratically’);
      -> ‘q36324’

    space(n)
    返回由n个空格字符组成的一个字符串
    mysql> select space(6);
      -> ’ ’

    replace(str,from_str,to_str)
    用字符串to_str替换字符串str中的子串from_str并返回
    mysql> select replace(‘www.mysql.com’, ‘w’, ‘ww’);
      -> ‘wwwwww.mysql.com’

    repeat(str,count)
    返回由count个字符串str连成的一个字符串(任何参数为null时
    返回null,count<=0时返回一个空字符串)
    mysql> select repeat(‘mysql’, 3);
      -> ‘mysqlmysqlmysql’

    reverse(str)
    颠倒字符串str的字符顺序并返回
    mysql> select reverse(‘abc’);
      -> ‘cba’

    insert(str,pos,len,newstr)
    把字符串str由位置pos起len个字符长的子串替换为字符串
    newstr并返回
    mysql> select insert(‘quadratic’, 3, 4, ‘what’);
      -> ‘quwhattic’

    elt(n,str1,str2,str3,…)
    返回第n个字符串(n小于1或大于参数个数返回null)
    mysql> select elt(1, ‘ej’, ‘heja’, ‘hej’, ‘foo’);
      -> ‘ej’
    mysql> select elt(4, ‘ej’, ‘heja’, ‘hej’, ‘foo’);
      -> ‘foo’

    field(str,str1,str2,str3,…)
    返回str等于其后的第n个字符串的序号(如果str没找到返回0)
    mysql> select field(‘ej’, ‘hej’, ‘ej’, ‘heja’, ‘hej’,
    ‘foo’);
      -> 2
    mysql> select field(‘fo’, ‘hej’, ‘ej’, ‘heja’, ‘hej’,
    ‘foo’);
      -> 0

    find_in_set(str,strlist)
    返回str在字符串集strlist中的序号(任何参数是null则返回
    null,如果str没找到返回0,参数1包含","时工作异常)
    mysql> select find_in_set(‘b’,‘a,b,c,d’);
      -> 2

    make_set(bits,str1,str2,…)
    把参数1的数字转为二进制,假如某个位置的二进制位等于1,对应
    位置的字串选入字串集并返回(null串不添加到结果中)
    mysql> select make_set(1,‘a’,‘b’,‘c’);
      -> ‘a’
    mysql> select make_set(1 | 4,‘hello’,‘nice’,‘world’);
      -> ‘hello,world’
    mysql> select make_set(0,‘a’,‘b’,‘c’);
      -> ‘’

    export_set(bits,on,off,[separator,[number_of_bits]])
    按bits排列字符串集,只有当位等于1时插入字串on,否则插入
    off(separator默认值",",number_of_bits参数使用时长度不足补0
    而过长截断)
    mysql> select export_set(5,‘y’,‘n’,’,’,4)
      -> y,n,y,n

    lcase(str)
    lower(str)

    返回小写的字符串str
    mysql> select lcase(‘quadratically’);
      -> ‘quadratically’

    ucase(str)
    upper(str)

    返回大写的字符串str
    mysql> select ucase(‘quadratically’);
      -> ‘quadratically’

    load_file(file_name)
    读入文件并且作为一个字符串返回文件内容(文件无法找到,路径
    不完整,没有权限,长度大于max_allowed_packet会返回null)
    mysql> update table_name set blob_column=load_file
    ("/tmp/picture") where id=1;

    2、数学函数

    abs(n)
    返回n的绝对值
    mysql> select abs(2);
      -> 2
    mysql> select abs(-32);
      -> 32

    sign(n)
    返回参数的符号(为-1、0或1)
    mysql> select sign(-32);
      -> -1
    mysql> select sign(0);
      -> 0
    mysql> select sign(234);
      -> 1

    mod(n,m)
    取模运算,返回n被m除的余数(同%操作符)
    mysql> select mod(234, 10);
      -> 4
    mysql> select 234 % 10;
      -> 4
    mysql> select mod(29,9);
      -> 2

    floor(n)
    返回不大于n的最大整数值
    mysql> select floor(1.23);
      -> 1
    mysql> select floor(-1.23);
      -> -2

    ceiling(n)
    返回不小于n的最小整数值
    mysql> select ceiling(1.23);
      -> 2
    mysql> select ceiling(-1.23);
      -> -1

    round(n,d)
    返回n的四舍五入值,保留d位小数(d的默认值为0)
    mysql> select round(-1.23);
      -> -1
    mysql> select round(-1.58);
      -> -2
    mysql> select round(1.58);
      -> 2
    mysql> select round(1.298, 1);
      -> 1.3
    mysql> select round(1.298, 0);
      -> 1

    exp(n)
    返回值e的n次方(自然对数的底)
    mysql> select exp(2);
      -> 7.389056
    mysql> select exp(-2);
      -> 0.135335

    log(n)
    返回n的自然对数
    mysql> select log(2);
      -> 0.693147
    mysql> select log(-2);
      -> null

    log10(n)
    返回n以10为底的对数
    mysql> select log10(2);
      -> 0.301030
    mysql> select log10(100);
      -> 2.000000
    mysql> select log10(-100);
      -> null

    pow(x,y)
    power(x,y)

     返回值x的y次幂
    mysql> select pow(2,2);
      -> 4.000000
    mysql> select pow(2,-2);
      -> 0.250000

    sqrt(n)
     返回非负数n的平方根
    mysql> select sqrt(4);
      -> 2.000000
    mysql> select sqrt(20);
      -> 4.472136

    pi()
     返回圆周率
    mysql> select pi();
      -> 3.141593

    cos(n)
     返回n的余弦值
    mysql> select cos(pi());
      -> -1.000000

    sin(n)
     返回n的正弦值
    mysql> select sin(pi());
      -> 0.000000

    tan(n)
    返回n的正切值
    mysql> select tan(pi()+1);
      -> 1.557408

    acos(n)
     返回n反余弦(n是余弦值,在-1到1的范围,否则返回null)
    mysql> select acos(1);
      -> 0.000000
    mysql> select acos(1.0001);
      -> null
    mysql> select acos(0);
      -> 1.570796

    asin(n)
    返回n反正弦值
    mysql> select asin(0.2);
      -> 0.201358
    mysql> select asin(‘foo’);
      -> 0.000000

    atan(n)
    返回n的反正切值
    mysql> select atan(2);
      -> 1.107149
    mysql> select atan(-2);
      -> -1.107149
    atan2(x,y)
     返回2个变量x和y的反正切(类似y/x的反正切,符号决定象限)
    mysql> select atan(-2,2);
      -> -0.785398
    mysql> select atan(pi(),0);
      -> 1.570796

    cot(n)
    返回x的余切
    mysql> select cot(12);
      -> -1.57267341
    mysql> select cot(0);
      -> null

    rand()
    rand(n)

    返回在范围0到1.0内的随机浮点值(可以使用数字n作为初始值)

    mysql> select rand();
      -> 0.5925
    mysql> select rand(20);
      -> 0.1811
    mysql> select rand(20);
      -> 0.1811
    mysql> select rand();
      -> 0.2079
    mysql> select rand();
      -> 0.7888

    degrees(n)
    把n从弧度变换为角度并返回
    mysql> select degrees(pi());
      -> 180.000000

    radians(n)
    把n从角度变换为弧度并返回
    mysql> select radians(90);
      -> 1.570796

    truncate(n,d)
    保留数字n的d位小数并返回
    mysql> select truncate(1.223,1);
      -> 1.2
    mysql> select truncate(1.999,1);
      -> 1.9
    mysql> select truncate(1.999,0);
      -> 1

    least(x,y,…)
    返回最小值(如果返回值被用在整数(实数或大小敏感字串)上下文或所有参数都是整数(实数或大小敏感字串)则他们作为整数(实数或大小敏感字串)比较,否则按忽略大小写的字符串被比较)
    mysql> select least(2,0);
      -> 0
    mysql> select least(34.0,3.0,5.0,767.0);
      -> 3.0
    mysql> select least(“b”,“a”,“c”);
      -> “a”

    greatest(x,y,…)
    返回最大值(其余同least())
    mysql> select greatest(2,0);
      -> 2
    mysql> select greatest(34.0,3.0,5.0,767.0);
      -> 767.0
    mysql> select greatest(“b”,“a”,“c”);
      -> “c”

    3、时期时间函数

    dayofweek(date)
    返回日期date是星期几(1=星期天,2=星期一,……7=星期六,odbc标准)
    mysql> select dayofweek(‘1998-02-03’);
      -> 3

    weekday(date)
    返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。

    mysql> select weekday(‘1997-10-04 22:23:00’);
      -> 5
    mysql> select weekday(‘1997-11-05’);
      -> 2

    dayofmonth(date)
    返回date是一月中的第几日(在1到31范围内)
    mysql> select dayofmonth(‘1998-02-03’);
      -> 3

    dayofyear(date)
    返回date是一年中的第几日(在1到366范围内)
    mysql> select dayofyear(‘1998-02-03’);
      -> 34

    month(date)
    返回date中的月份数值
    mysql> select month(‘1998-02-03’);
      -> 2

    dayname(date)
    返回date是星期几(按英文名返回)
    mysql> select dayname(“1998-02-05”);
      -> ‘thursday’

    monthname(date)
    返回date是几月(按英文名返回)
    mysql> select monthname(“1998-02-05”);
      -> ‘february’

    quarter(date)
    返回date是一年的第几个季度
    mysql> select quarter(‘98-04-01’);
      -> 2

    week(date,first)
    返回date是一年的第几周(first默认值0,first取值1表示周一是
    周的开始,0从周日开始)
    mysql> select week(‘1998-02-20’);
      -> 7
    mysql> select week(‘1998-02-20’,0);
      -> 7
    mysql> select week(‘1998-02-20’,1);
      -> 8

    year(date)
    返回date的年份(范围在1000到9999)
    mysql> select year(‘98-02-03’);
      -> 1998

    hour(time)
    返回time的小时数(范围是0到23)
    mysql> select hour(‘10:05:03’);
      -> 10

    minute(time)
    返回time的分钟数(范围是0到59)
    mysql> select minute(‘98-02-03 10:05:03’);
      -> 5

    second(time)
    返回time的秒数(范围是0到59)
    mysql> select second(‘10:05:03’);
      -> 3

    period_add(p,n)
    增加n个月到时期p并返回(p的格式yymm或yyyymm)
    mysql> select period_add(9801,2);
      -> 199803

    period_diff(p1,p2)
    返回在时期p1和p2之间月数(p1和p2的格式yymm或yyyymm)
    mysql> select period_diff(9802,199703);
      -> 11

    date_add(date,interval expr type)
    date_sub(date,interval expr type)
    adddate(date,interval expr type)
    subdate(date,interval expr type)

    对日期时间进行加减法运算
    (adddate()和subdate()是date_add()和date_sub()的同义词,也
    可以用运算符+和-而不是函数
    date是一个datetime或date值,expr对date进行加减法的一个表
    达式字符串type指明表达式expr应该如何被解释
     [type值 含义 期望的expr格式]:
     second 秒 seconds
     minute 分钟 minutes
     hour 时间 hours
     day 天 days
     month 月 months
     year 年 years
     minute_second 分钟和秒 “minutes:seconds”
     hour_minute 小时和分钟 “hours:minutes”
     day_hour 天和小时 “days hours”
     year_month 年和月 “years-months”
     hour_second 小时, 分钟, “hours:minutes:seconds”
     day_minute 天, 小时, 分钟 “days hours:minutes”
     day_second 天, 小时, 分钟, 秒 “days
    hours:minutes:seconds”
     expr中允许任何标点做分隔符,如果所有是date值时结果是一个
    date值,否则结果是一个datetime值)
     如果type关键词不完整,则mysql从右端取值,day_second因为缺
    少小时分钟等于minute_second)
     如果增加month、year_month或year,天数大于结果月份的最大天
    数则使用最大天数)
    mysql> select “1997-12-31 23:59:59” + interval 1 second;

    -> 1998-01-01 00:00:00
    mysql> select interval 1 day + “1997-12-31”;
      -> 1998-01-01
    mysql> select “1998-01-01” - interval 1 second;
      -> 1997-12-31 23:59:59
    mysql> select date_add(“1997-12-31 23:59:59”,interval 1
    second);
      -> 1998-01-01 00:00:00
    mysql> select date_add(“1997-12-31 23:59:59”,interval 1
    day);
      -> 1998-01-01 23:59:59
    mysql> select date_add(“1997-12-31 23:59:59”,interval
    “1:1” minute_second);
      -> 1998-01-01 00:01:00
    mysql> select date_sub(“1998-01-01 00:00:00”,interval “1
    1:1:1” day_second);
      -> 1997-12-30 22:58:59
    mysql> select date_add(“1998-01-01 00:00:00”, interval “-1
    10” day_hour);
      -> 1997-12-30 14:00:00
    mysql> select date_sub(“1998-01-02”, interval 31 day);
      -> 1997-12-02
    mysql> select extract(year from “1999-07-02”);
      -> 1999
    mysql> select extract(year_month from “1999-07-02
    01:02:03”);
      -> 199907
    mysql> select extract(day_minute from “1999-07-02
    01:02:03”);
      -> 20102

    to_days(date)
    返回日期date是西元0年至今多少天(不计算1582年以前)
    mysql> select to_days(950501);
      -> 728779
    mysql> select to_days(‘1997-10-07’);
      -> 729669

    from_days(n)
     给出西元0年至今多少天返回date值(不计算1582年以前)
    mysql> select from_days(729669);
      -> ‘1997-10-07’

    date_format(date,format)
     根据format字符串格式化date值
     (在format字符串中可用标志符:
     %m 月名字(january……december)
     %w 星期名字(sunday……saturday)
     %d 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
     %y 年, 数字, 4 位
     %y 年, 数字, 2 位
     %a 缩写的星期名字(sun……sat)
     %d 月份中的天数, 数字(00……31)
     %e 月份中的天数, 数字(0……31)
     %m 月, 数字(01……12)
     %c 月, 数字(1……12)
     %b 缩写的月份名字(jan……dec)
     %j 一年中的天数(001……366)
     %h 小时(00……23)
     %k 小时(0……23)
     %h 小时(01……12)
     %i 小时(01……12)
     %l 小时(1……12)
     %i 分钟, 数字(00……59)
     %r 时间,12 小时(hh:mm:ss [ap]m)
     %t 时间,24 小时(hh:mm:ss)
     %s 秒(00……59)
     %s 秒(00……59)
     %p am或pm
     %w 一个星期中的天数(0=sunday ……6=saturday )
     %u 星期(0……52), 这里星期天是星期的第一天
     %u 星期(0……52), 这里星期一是星期的第一天
     %% 字符% )
    mysql> select date_format(‘1997-10-04 22:23:00’,’%w %m %
    y’);
      -> ‘saturday october 1997’
    mysql> select date_format(‘1997-10-04 22:23:00’,’%h:%i:%
    s’);
      -> ‘22:23:00’
    mysql> select date_format(‘1997-10-04 22:23:00’,’%d %y %a
    %d %m %b %j’);
      -> ‘4th 97 sat 04 10 oct 277’
    mysql> select date_format(‘1997-10-04 22:23:00’,’%h %k %i
    %r %t %s %w’);
      -> ‘22 22 10 10:23:00 pm 22:23:00 00 6’

    time_format(time,format)
     和date_format()类似,但time_format只处理小时、分钟和秒(其
    余符号产生一个null值或0)

    curdate()
    current_date()

     以’yyyy-mm-dd’或yyyymmdd格式返回当前日期值(根据返回值所
    处上下文是字符串或数字)
    mysql> select curdate();
      -> ‘1997-12-15’
    mysql> select curdate() + 0;
      -> 19971215

    curtime()
    current_time()

     以’hh:mm:ss’或hhmmss格式返回当前时间值(根据返回值所处上
    下文是字符串或数字)
    mysql> select curtime();
      -> ‘23:50:26’
    mysql> select curtime() + 0;
      -> 235026

    now()
    sysdate()
    current_timestamp()

     以’yyyy-mm-dd hh:mm:ss’或yyyymmddhhmmss格式返回当前日期
    时间(根据返回值所处上下文是字符串或数字)
    mysql> select now();
      -> ‘1997-12-15 23:50:26’
    mysql> select now() + 0;
      -> 19971215235026

    unix_timestamp()
    unix_timestamp(date)

    返回一个unix时间戳(从’1970-01-01 00:00:00’gmt开始的秒
    数,date默认值为当前时间)
    mysql> select unix_timestamp();
      -> 882226357
    mysql> select unix_timestamp(‘1997-10-04 22:23:00’);
      -> 875996580

    from_unixtime(unix_timestamp)
    以’yyyy-mm-dd hh:mm:ss’或yyyymmddhhmmss格式返回时间戳的
    值(根据返回值所处上下文是字符串或数字)
    mysql> select from_unixtime(875996580);
      -> ‘1997-10-04 22:23:00’
    mysql> select from_unixtime(875996580) + 0;
      -> 19971004222300

    from_unixtime(unix_timestamp,format)
    以format字符串格式返回时间戳的值
    mysql> select from_unixtime(unix_timestamp(),’%y %d %m %
    h:%i:%s %x’);
      -> ‘1997 23rd december 03:43:30 x’

    sec_to_time(seconds)
    以’hh:mm:ss’或hhmmss格式返回秒数转成的time值(根据返回值所处上下文是字符串或数字)
    mysql> select sec_to_time(2378);
      -> ‘00:39:38’
    mysql> select sec_to_time(2378) + 0;
      -> 3938

    time_to_sec(time)
    返回time值有多少秒
    mysql> select time_to_sec(‘22:23:00’);
      -> 80580
    mysql> select time_to_sec(‘00:39:38’);
      -> 2378

    4、转换函数

    cast
    用法:cast(字段 as 数据类型) [当然是否可以成功转换,还要看数据类型强制转化时注意的问题]
    实例:select cast(a as unsigned) as b from cardserver where order by b desc;
    convert:
    用法:convert(字段,数据类型)
    实例:select convert(a ,unsigned) as b from cardserver where order by b desc;

    在这里插入图片描述
    关注微信公众号带你知道更多~

    展开全文
  • MySql函数大全

    千次阅读 多人点赞 2019-01-07 00:14:21
    数学函数 绝对值函数ABS(x)和返回圆周率的函数PI() ABS(x)返回x的绝对值 求2,-3.3,和-33的绝对值 PI()返回圆周率π的值,默认的显示小数位数是6位 平方根函数SQRT(x)和求余函数MOD(x,y) ...

    数学函数

    绝对值函数ABS(x)和返回圆周率的函数PI()

    ABS(x)返回x的绝对值
    求2,-3.3,和-33的绝对值
    PI()返回圆周率π的值,默认的显示小数位数是6位
    

    在这里插入图片描述
    在这里插入图片描述

    平方根函数SQRT(x)和求余函数MOD(x,y)

    SQRT(x)返回非负数x的二次方根
    求9,40,-49的二次方根
    负数没有平方根,故-49的返回值是null
    
    MOD(x,y)返回x被y除后的余数,也就是x除以y所得余数,mod()对于带有小数
    部分的数值也起作用,他返回除法运算后的精确余数
    对MOD(31,8),
    MOD(234,10),MOD(45.5,6)进行求余运算
    

    在这里插入图片描述
    在这里插入图片描述

    获取整数的函数CEIL(x),CEILING(x),FLOOR(x)

    CEIL(x)和CEILING(x)意义相同,前者是后者的缩写,返回不小于x的最小整数值,
    并不是四舍五入,返回值转化为一个BIGINT类型
    -3.4为负数,不小于-3.4的最小整数为-3,3.1为正数,不小于3.1的最小整数为4
    
    FLOOR(x)返回不大于x的最大整数
    -3.4为负数,不大于-3.4的最大整数为-4,3.1为正数,不大于3.1的最大整数为3
    

    在这里插入图片描述
    在这里插入图片描述

    获取随机数的函数RAND()和RAND(x)

    RAND(x)返回一个随机浮点值v,范围在0到1之间(即0<=v<=1.0)
    若指定一个整数参数x,则它被用作种子值,用来产生重复序列
    通过RAND()+10,可以获取10到11之间的随机数,
    不带参数x的RAND()产生的参数是不相同的,带参数的将会参数相同的随机数
    

    在这里插入图片描述
    在这里插入图片描述

    函数ROUND(x),round(x,y),TRUNCATE(x,y)

    round(x)返回最接近于参数x的整数,对x值进行四舍五入
    四舍五入之后,只保留各个值的整数部分
    round(x,y),返回最接近参数x的数,其值保留到小数点后的y位,
    若y的值为负值,则保留到左边的y位,保留的小数点左边的相应位数
    直接保存为0,不进行四舍五入
    

    在这里插入图片描述
    在这里插入图片描述

    truncate(x,y)返回被舍去至小数点后y位的数字x,若y的值为0,
    则结果不带小数点或者小数部分。若y的值为负数,则截去(归零)x小数
    点左起第y位开始后面所有地位的值
    rounf(x,y)在截取时会进行四舍五入,而truncate(x,y)直接进行截取,不会四舍五入
    

    在这里插入图片描述

    符号函数SIGN(x)

    sign(x)返回参数的符号,x的值为负或正数时,返回结果分别是-1,0,1
    

    在这里插入图片描述

    幂运算函数POW(x,y),power(x,y),EXP(x)

    pow(x,y)或者power(x,y)返回x的y次乘方的结果值
    exp(x)返回e的x乘方
    

    在这里插入图片描述
    在这里插入图片描述

    对数运算函数

    LOG(x)返回x的自然对数,x相对于基数e的对数
    对数定义域不能为负数,因此log(-3)返回结果为null
    log10(x)返回x的基数为10的对数
    
    

    在这里插入图片描述
    在这里插入图片描述

    角度与弧度相互转换的函数radians(x)和defrees(x)

    使用radians将角度转换为弧度,
    degrees(x)将参数x由弧度转换为角度
    

    在这里插入图片描述

    正弦函数sin(x)和反正弦函数asin(x)

    sin(x)返回x的正弦,其中x为弧度值
    asin(x)返回x的反正弦值,值必须在-1到1之间,否则会返回null
    

    在这里插入图片描述
    在这里插入图片描述

    余弦函数cos(x)和反余弦函数ACOS(x)

    cos(x)返回x的余弦,x为弧度值,cos与acos互为反函数
    

    在这里插入图片描述
    在这里插入图片描述

    正切函数、反正切函数、余切函数

    TAN(x)返回x的正切,其中x为给定的弧度值,
    ATAN(x)返回x的反正切,即正切为x事务值
    COT(x)返回x的余切,与tan互为倒数
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    字符串函数

    计算字符串字符数的长度和字符串长度的函数

    CHAR_LENGTH(str)返回值为字符串str所包含的字符个数,一个多字节字符算作一个单字符
    LENGTH(str)返回值为字符串的字节长度,使用utf8(unicode的一种变
    长字符编码,又称万国码)编码字符集时,一个汉字是两个字节,
    一个数字或者字母算一个字节
    

    在这里插入图片描述
    在这里插入图片描述

    合并字符串函数CONCAT(s1,s2,…)、CONCAT_WS(x,s1,s2,…)

    CONCAT(s1,s2,...)返回结果为连接参数产生的字符串,可能有一个或者多个参数,
    如果有一个参数值为null,返回值为null。
    如果所有参数为非二进制字符串,则返回结果为非二进制字符串,如果参数中含
    有一个二进制字符串,则返回结果为二进制字符串
    

    在这里插入图片描述

    concat_ws(x,s1,s2,...),CONCAT_WS代表concat with separator,是concat()的特殊形式,
    第一个参数x是其它参数的分隔符,分隔符的位置放在要连接的两个字符串之间。
    分隔符可以是一个字符串,也可以是其它参数,如果分割符是null,则结果是null,
    函数会忽略任何分割符参数后的null值,即如果出现null,则忽略此null,继续拼接其它的。
    

    在这里插入图片描述

    替换字符串的函数INSERT(s1,x,len,s2)

    Insert(s1,x,len,s2)返回字符串s1,其子字符串起始于x位置和被s2取代的
    len字符,如果x超过字符串的长度,则返回原始字符串,假如len的长度大于
    其它字符串的长度,则从位置x处开始替换,若任何一个参数为null,则返回值为null
    起始位置小于1,大于s1的长度,均返回s1原字符串。
    

    在这里插入图片描述
    在这里插入图片描述

    字母大小写转换函数

    LOWER(str)或者LCASE(str)可以str字符串中字母字符全部转换成小写字母
    UPPER或者UCASE可以将字符串中所有字母转化为大写
    

    在这里插入图片描述
    在这里插入图片描述

    获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n)

    left(s,n)只有两个参数,第一个参数是原字符串,第二个参数是截止位置
    left是左边的意思,函数的意思就是1开始,截取n个字符,或者说截取左边n个字符
    right是右边的意思,含义同上
    

    在这里插入图片描述
    在这里插入图片描述

    填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2)

    LPAD(s1,len,s2)返回字符串s1,其左边由字符串s2填补到len字符长度
    假如s1的长度大于len,则返回值被缩短到len字符
    RPAD(s1,len,s2)返回字符串s1,其右边由字符串s2填补到len字符长度
    假如s1的长度大于len,则返回值被缩短到len字符
    

    在这里插入图片描述
    在这里插入图片描述

    删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s)

    LTRIM(s) 返回字符串s,字符串s的左侧字符被删除,右边空格不会被删除
    RTRIM(s)返回字符串s,字符串s的右侧字符被删除,左边字符不会被删除
    TRIM(s)返回字符串s,字符串s的两侧字符被删除,中间字符不会被删除
    

    在这里插入图片描述

    删除指定字符串的函数TRIM(s1 from s)

    TRIM(s1 from s) 未指定s1的情况下,删除两端的空格
    指定s1的情况下,删除s两端所有的子串s1
    

    在这里插入图片描述

    重复生成字符串的函数REPEAT(s,n)

    REPEAT(s,n)返回一个s重复n次的字符串s,如果n小于等于0,则返回
    一个空字符串,若s或者n为null,则返回null
    

    在这里插入图片描述

    空格函数SPACE(n)和替换函数REPLACE(s,s1,s2)

    SPACE(n)返回由n个空格组成的字符串
    replace(s,s1,s2)使用字符串s2替换s中的所有字符串s1
    

    在这里插入图片描述
    在这里插入图片描述

    比较字符串大小的函数STRCMP(s1,s2)

    strcmp(s1,s2)  若所有的字符串相同,则返回0,若第一个参数小于第二个,则返回-1,
    其余情况返回1
    

    在这里插入图片描述

    获取子串的函数SUBSTRING(s,n,len)和MID(s,n,len)

    substring(s,n,len)带有len参数的格式,从字符串s返回一个长度同len
    字符相同的子字符串,起始于位置n。
    如果n是负值,则子字符串的位置起始于字符串结尾的n字符,即倒数第n
    个字符,而不是字符串的开头位置
    substring函数与mid函数作用相同
    如果对len使用一个小于1的值,则结果始终是空字符串
    

    在这里插入图片描述
    在这里插入图片描述

    匹配字符串开始位置的函数

    locate(str1,str),position(str1 in str),insert(str,str1)三个函数的作用相同,返回子
    字符串str1在str中的开始位置
    

    在这里插入图片描述

    字符串的逆序函数

    REVERSE(s)将字符串s反转,返回的字符串顺序和s的字符串顺序相反
    

    在这里插入图片描述

    返回指定位置的字符串的函数

    ELT(N,字符串1,字符串2,字符串3,...,字符串N),若n等于1,
    则返回值为字符串1,若n=2,则返回值为字符串2,,以此类推。
    若N小于1或者大于参数的数目,则返回Null
    

    在这里插入图片描述

    返回指定字符串位置的函数FIELD(s,s1,s2,…)

    Field(s,s1,s2,..)返回字符串在列表s1,s2,s3...中第一次出现的位置,
    在找不到s的情况下,返回0,如果s的值为null,则返回值是0,
    原因是null不能同任何值进行同等比较
    

    在这里插入图片描述

    返回子串位置的函数FIND_IN_SET(s1,s2)

    FIND_IN_SET(s1,s2)返回字符串s1在字符串列表s2中出现的位置
    字符串列表是一个由多个','分割的字符串组成的列表,如果s1不在s2中
    或者s2为空字符串,则返回值为0,如果任意一个字符串为null,则返回值是null
    

    在这里插入图片描述

    选取字符串的函数make_set(x,s1,s2,…)

    make_set(x,s1,s2,...)返回由x的二进制数指定的相应的相应位的字符串组成的字符串,s1对应比特1,
    s2对应比特01,以此类推,s1,s2...中的null值不会被添加到结果中
    

    在这里插入图片描述

    1的二进制位0001,4的二进制值为0100,1与4进行或操作后是0101,从右往左第一位
    和第三位为1.make_set(1,'a','b','c')返回第一个字符串;
    make_set(1|4,'hello','nice','world')返回从左端开始的第1和第3
    个字符组成的字符串;null值不会添加到结果中
    

    时间和日期函数

    获取当前日期和获取当前时间的函数

     curdate()和current_date()函数作用相同,将当前日期安照'YYYY-MM-DD'或YYYYMMDD格式的值返回,
     具体格式根据函数在字符串或是数字语境中而定。
    通过下图结果 可以看到,两个函数的作用相同,都是获取系统当前日期,通过+0,将日期型转换为数值型。
    

    在这里插入图片描述

    CURRENT_TIME(),CURTIME()函数作用相同,将当前时间以HH:MM:SS或HHMMSS的格式返回,
    具体格式根据字符串或是数字语境中而定。
    

    在这里插入图片描述

    获取当前日期和时间的函数

    CURRENT_TIMESTAMP()、LOCALTIME()、NOW()和SYSDATE()4个函数的作用相同,
    均返回当前日期和时间值,格式为'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS,具体格式根据
    函数在字符串或数字语境中而定,四个函数返回的结果值是一致的
    

    在这里插入图片描述
    在这里插入图片描述

    UNIX时间戳函数

    unix_timestamp(date)如无参数调用,则返回一个unix时间戳('1970-01-01 00:00:00'GMT之后的秒数)
    作为无符号整数。其中GMT(Greenwich mean time)为格林尼治标准时间。若用date来调用UNIX_TIMESTAMP(),
    他会参数值以'1970-01-01 00:00:00'GMT后的秒数的形式返回。date可以是一个DATE字符串、DATETIME字符串、
    TIMESTAMP或一个当地时间的YYMMDD或YYYYMMDD格式的数字。
    

    在这里插入图片描述

    FROM_UNIXTIME(date)函数把unix时间戳转换为普通格式的时间,与
    UNIX_TIMESTAMP(date)函数互为反函数
    

    在这里插入图片描述

    返回UTC日期的函数和返回UTC时间的函数

    UTC_DATE()返回当前UTC(世界标准世界)日期值,其格式为'YYYY-MM-DD'或YYYYMMDD,
    具体格式取决于函数是否用在字符串或者数字语境中。UTC_DATE()返回值为当前时区的日期值。
    UTC_TIME()返回当前时区的时间值,其格式为'HH:MM:SS'或者HHMMSS,具体格式取决于函数是否
    用在字符串或者数字语境中。
    

    在这里插入图片描述
    在这里插入图片描述

    获取月份的函数MONTH(date)和MONTHNAME(date)

    MONTH(date)返回date对应的月份,范围值从1到12
    MONTHNAME(date)函数返回日期date对应月份的全英文名
    

    在这里插入图片描述

    获取星期的函数DAYNAME(d)、DAYOFWEEK(d)和WEEKDAY(d)

    dayname(d)函数返回d对应的工作日的英文名称,例如sunday\monday等
    dayofweek(d)函数返回d对应的一周的索引位置,1表示周日,2表示周一,...7表示周六
    weekday(d)返回d对应的工作日索引,0表示周一,1表示周二...6表示周日
    

    在这里插入图片描述

    获取星期数的函数WEEK(d)和WEEKOFYEAR(d)

    WEEK(d)计算日期d是一年中的第几周
    WEEKOFYEAR(d)计算某一天是一年中的第几周,相当于week(d,3)
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    获取天数的函数DAYOFYEAR(d),DAYOFMONTH(d)

    DAYOFYEAR返回一年中的第几天,范围从1到366
    DAYOFMONTH返回一个月的第几天,范围从1到31
    

    在这里插入图片描述

    获取年份、季度、小时、分钟和秒钟的函数

    YEAR(d)返回d对应的年份,范围从1970-2069
    当年份只有两位时,00-69转换为2000-2069,70-99转换为1970-1999
    

    在这里插入图片描述

    quarter(date) 返回date对应一年中的季度值,范围是1-4
    

    在这里插入图片描述

    minute(time)返回time对应的分钟数,范围是0-59
    

    在这里插入图片描述

    second(time)返回time对应的秒数
    

    在这里插入图片描述

    获取日期的指定值的函数EXTRACT(type from date)

    在这里插入图片描述

    时间与秒钟转换的函数

    time_to_sec(time) 返回已转化为秒的time参数,转换公式为:小时*3600+分钟*60+秒
    sec_to_time(seconds)返回被转换为小时、分钟和秒数的seconds参数值,其格式为'HH:MM:SS'或HHMMSS,
    具体格式根据该函数是否用在字符串或者数字语境中而定
    

    在这里插入图片描述

    计算日期和时间的函数

    计算日期和时间的函数有:DATE_ADD()、ADDDATE(),DATE_SUB()、SUB_DATE(),
    ADDTIME()、SUBTIME()和DATE_DIFF()。
    DATE_ADD(date,INTERVAL expr type)和DATE_SUB(date,INTERVAL expr type),其中
    date是一个DATETIME或者date值,用来指定起始时间。expr是一个表达式,用来指定从起始日期
    添加或者减去的时间间隔值,expr是一个字符串,对于负值的时间间隔,它可以以一个'-'开头
    type是关键词,它表示了表达式被解释的方式。若date参数是一个DATE值,计算会包括YEAR、MONTH、DAY部分
    即(没有时间部分),其结果是一个DATE值,否则将是一个DATETIME值,DATE_ADD和ADDDATE()两个
    函数作用相同,执行日期的加运算。
    

    将日期和时间格式化的函数

    DATE_FORMAT(date,format)根据format指定的格式格式化date值,
    

    条件判断函数

    IF(expr,v1,v2)

    如果表达式expr的结果值为true,则返回v1,如果为false,则返回v2。IF()的返回值为数字值或字符串值,
    具体情况视其所在语境而定
    

    在这里插入图片描述

    IFNULL(v1,v2)函数

    IFNULL(v1,v2)加入v1不为null,则IFNULL()的返回值为V1;否则其返回值为v2。
    IFNULL的返回值是数字还是字符串,根据其具体的语境而定。
    

    在这里插入图片描述

    CASE函数

    CASE expr  WHEN v1 THEN r1 [WHEN  v2 THEN r2][ELSE rn] END
    该函数表示,如果expr的值等于某个vn,则返回对应位置THEN后面的结果。
    如果与所有值都不相等,则返回ELSE后面的rn
    

    在这里插入图片描述

    CASE WHEN v1 THEN r1 [WHEN v2 then r2] [else rn] end;
    该函数表示,当某个vn为true时,返回对应then后面的结果
    

    在这里插入图片描述

    系统信息函数

    MySQL中的系统信息有:数据库的版本号、当前用户名和连接数、系统字符集、最后一个自动生成的ID值等。
    

    获取MySQL版本号、连接数和数据库名的函数

    VERSION()返回指示MySQL服务器版本的字符串,这个字符串使用utf8字符集
    connection_id()返回MySQL数据库当前连接的次数,每个连接都有自己唯一的ID
    show processlist;show full processlist();
    processlist命令的输出结果显示了有哪些线程在运行,不仅可以查看当前所有的连接数,
    还可以查看当前的连接状态,帮助识别出有问题的查询语句等。
    如果是root账号,能看到所有用户的当前连接。如果是其它普通账号,则只能看到自己占用的连接。
    未加full,只列出前100条,加full,则列出全部结果。
    database()和schema()函数返回使用utf8字符集的默认(当前)数据库名
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    获取用户名的函数

    USER()、CURRENT_USER()、SYSTEM_USER()和SESSION_USER()
    这几个函数返回当前被MySQL服务器验证的用户名和主机名组合
    

    在这里插入图片描述

    获取字符串的字符集和排序方式的函数

    CHARSET(str)返回字符串str自变量的字符集
    COLLATION(str)返回字符串str的排列方式,使用不同字符集时,字符串的排列方式不同。
    

    在这里插入图片描述
    在这里插入图片描述

    获取最后一个自动生成的ID值的函数

    SELECT LAST_INSERT_ID();
    

    加/解密函数

    加密函数MD5(str)

    MD5(str)为字符串算出一个MD5 128比特校验和。该值以32位十六进制数字的
    二进制字符串形式返回,若参数为null,则返回null。
    

    在这里插入图片描述

    加密函数ENCODE(str,pswd_str)

    ENCODE(str,pswd_str)使用pswd_str作为密码,加密str。使用DECODE()
    解密结果,是一个和str相同的二进制字符串
    select    encode('secret','cry'),length(encode('secret','cry'));
    

    解密函数DECODE(crypt_str,pswd_str)

    select  decode(encode('secret','cry'),'cry');
    ENCODE与decode互为反函数
    

    其它函数

    格式化函数FORMAT(x,n)

    FORMAT(x,n)将数字x格式化,并以四舍五入的方式保留小数点后n位,结果以字符串的形式返回。
    若n为0,则返回结果不带小数部分。
    

    在这里插入图片描述

    不同进制的数字进行转换的函数

    conv(N,from_base,to_base)函数进行不同进制数间的转换。返回值为N的字符串表示,由
    from_base进制转换为to_base进制。如有任意一个参数为null,则返回值为null。自变量n被理解为
    一个整数,但是可以被指定为一个整数或者字符串。最小基数,而最大基数则是36
    

    在这里插入图片描述

    IP地址与数字相互转换的函数

    INET_ATON(expr)给出一个作为字符串的网络地址的点地址表示,返回一个代表该地址数值的整数。
    地址可以是4或8bit地址
    产生的数字按照网络字节顺序,如图所示例子,计算方法为209*256^3+41*256^2+123*256+12
    

    在这里插入图片描述

    INET_NTOA(expr)给定一个数字网络地址(4或8bit),返回作为字符串的该地址的点地址表示。
    INET_NTOA和INET_ATON互为反函数
    

    在这里插入图片描述

    改变字符集的函数

    CONVERT(...USING...)带有USING的CONVERT()函数被用来在不同的字符集之间转化数据
    

    在这里插入图片描述

    改变数据类型的函数

    CAST(x,AS type)和CONVERT(x,type)函数将一个类型的值转换为另一个类型的值
    可以转换的type有:BINARY()、CHAR(n)、DATE、TIME、DATETIME、DECIMAL、
    SIGNED、UNSIGNED。
    

    在这里插入图片描述

    加锁函数和解锁函数

    GET_LOCK(str,timeout)
    RELEASE_LOCK(str)
    IS_FREE_LOCK(str)
    IS_USED_LOCK(str)
    
    展开全文
  • mysql函数日志

    千次阅读 2019-10-11 10:55:03
    where后为过滤条件语句,having后为以聚合函数为过滤条件语句,in后为集合交集语句; 主从查询时,同一字段需要做点运算:主查询语句的表名需要取别名,因为子查询用的表名和主查询的表名需要区分; HAVING ...

    1、select * from (select * from table) as tmp

    from后面紧跟的是表,而使用select语句选出来的是一组元组,使用as给这个元组重命名为a的一张表

    2、group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

    select id,group_concat(name) from aa group by id;  //默认concat分隔符“,”号

    3、substring_index(“待截取有用部分的字符串”,“截取数据依据的字符”,截取字符的位置N)

    SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('15,151,152,16',',',2),',',-1);==>得到结果为: 151

    4、


    where、having、in 语句

    1、字段重复记录查询:数据条数大于1的就是重复的数据

    select  name,count(*) as count from  student group by name having count>1;   //查询重名的学生
    
    

    2、主从查询语句:查出所有的重名学生,先子查询having出名字重复name(只返回name),再主where查询出name集中的学生;

    select * from student as s where (s.name) in (select name from student group by name having count(*) > 1);

    where后为过滤条件语句,having后为以聚合函数为过滤条件语句,in后为集合交集语句;

    主从查询时,同一字段需要做点运算:主查询语句的表名需要取别名,因为子查询用的表名和主查询的表名需要区分;

    HAVING 子句对 GROUP BY 子句设置条件的方式,与 WHERE 和 SELECT 的交互方式类似。WHERE 搜索条件在进行分组操作之前应用;而 HAVING 搜索条件在进行分组操作之后应用。HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数。HAVING 子句可以引用选择列表中显示的任意项。

    select id, name from student group by name having count(*) > 1

    WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。 
    GROUP BY 子句用来分组 WHERE 子句的输出。 
    HAVING 子句用来从分组的结果中筛选行。
    ORDER BY 子句可用于排序 GROUP BY 子句的输出

     

     

     

    展开全文
  • mysql函数-根据经纬度坐标计算距离

    热门讨论 2014-10-08 09:59:44
    mysql函数-根据经纬度坐标计算距离
  • MySQL函数---条件判断函数

    千次阅读 2019-08-29 15:17:40
    (1)IF(expr,v1,v2)函数 (2)IFNULL(v1,v2)函数 (3)CASE函数 (1)if(expr,v1,v2)函数 在if(expr,v1,v2)函数中,若表达式expr是true(expr<>0 and epr<>null)返回v1,否则返回v2。...mysql> select if(1...

    (1)IF(expr,v1,v2)函数
    (2)IFNULL(v1,v2)函数
    (3)CASE函数


    (1)if(expr,v1,v2)函数
    • 在if(expr,v1,v2)函数中,若表达式expr是true(expr<>0 and epr<>null)返回v1,否则返回v2。

    【例】使用if()函数进行条件判断,SQL语句如下:

    mysql> select if(1>2,2,3),
        -> if(1<2,'yes','no'),
        -> if(strcmp('test','test1'),'no','yes');
    +-------------+--------------------+---------------------------------------+
    | if(1>2,2,3) | if(1<2,'yes','no') | if(strcmp('test','test1'),'no','yes') |
    +-------------+--------------------+---------------------------------------+
    |           3 | yes                | no                                    |
    +-------------+--------------------+---------------------------------------+
    1 row in set (0.00 sec)
    

    (2)ifnull(v1,v2)函数
    • 在ifnull(v1,v2)中,假如v1不为null,则ifnull()的返回值为v1,否则返回值为v2。
    • 如果v1或v2中只有一个明确是null,则if()函数的结果类型为非null表达式的结果类型。

    【例】使用ifnull()函数进行条件判断,SQL语句如下:

    mysql> select ifnull(1,2),ifnull(null,10),ifnull(1/0,'wrong');
    +-------------+-----------------+---------------------+
    | ifnull(1,2) | ifnull(null,10) | ifnull(1/0,'wrong') |
    +-------------+-----------------+---------------------+
    |           1 |              10 | wrong               |
    +-------------+-----------------+---------------------+
    1 row in set (0.00 sec)
    

    (3)case函数

    1.case expr when v1 then r1 [ when v2 then r2] [else rn] end

    • 该函数表示,如果expr值等于某个vi,则返回对应位置then后面的结果,如果与所有值都不相等,则返回else后面的m。

    【例】使用case value when语句执行分支操作,SQL语句如下;

    mysql> select case 2 when 1 then 'one' when 2 then 'two' else 'more' end;
    +------------------------------------------------------------+
    | case 2 when 1 then 'one' when 2 then 'two' else 'more' end |
    +------------------------------------------------------------+
    | two                                                        |
    +------------------------------------------------------------+
    1 row in set (0.00 sec)
    

    2.case when v1 then rv [when v2 then r2] else rn] end

    • 该函数表示,某个vi值为true时,返回对应位置then后面的结果,如果所有值都不为true,则返回else后面的rn。
    • 一个case表达式的默认返回值类型是任何返回值的相容集合类型,具体情况视其所在语境而定。

    【例】使用case when 语句执行分支操作,SQL语句如下:

    mysql> select case when 1<0 then 'true' else 'false' end;
    +--------------------------------------------+
    | case when 1<0 then 'true' else 'false' end |
    +--------------------------------------------+
    | false                                      |
    +--------------------------------------------+
    1 row in set (0.00 sec)
    
    展开全文
  • mysql过程,函数debug工具
  • mysql函数执行

    千次阅读 2019-11-21 18:11:42
    mysql函数执行的实例 CREATE DEFINER=`root`@`%` PROCEDURE `TrancateDay`() begin set @Sql1 := "truncate summary_day"; SET @Sql2 = "insert into summary_day (service) (select service from summary_minute...
  • mysql函数编写

    万次阅读 2019-05-21 13:55:21
    mysql中函数的编写如下:create...如上就是mysql函数的编写的模板。在函数中,不能使用select语句来打印数据,使用select来查询数据并且赋值给变量,这个是可以的。函数是要有返回值的。在mysql中,函数可以使用在se...
  • 函数 含义:一组预先编译好的sql语句的集合,理解成批处理语句 1.提高代码的重用性 2、简化操作 3.减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率 区别: 存储过程:可以有0个返回,也可以有多个...
  • MySQL8.0 函数官方文档 functions.html
  • MySQL函数之CASE

    千次阅读 2019-01-22 11:26:17
    乍一看,是不是感觉和CAST很像,但这却是两个不一样的函数。 case函数和代码里面 if...else...很是相似,个人感觉这就是一个判断选择函数。 case的语法句式如下所示: case...when...then...else...end 在这个...
  • MySQL函数不能创建的解决方法

    千次阅读 2019-05-20 11:04:22
    MySQL函数不能创建的解决方法 MySQL函数不能创建,是一个很麻烦的问题,下面就为您提供了一个解决此问题的方法,如果您也遇到过类似的问题,不妨一看。 http://database.51cto.com/art/201010/229918.htm 在使用...
  • mysql函数实例

    千次阅读 2018-05-31 08:40:54
    CREATE FUNCTION hello() RETURNS VARCHAR(255) ... RETURN 'Hello world,i am mysql'; END DROP FUNCTION IF EXISTS formatDate CREATE FUNCTION formatDate(fdate datetime) RETURNS VARCHAR(255) ...
  • MySQL函数的参数

    万次阅读 2017-11-22 11:46:06
    MySQL函数的参数 1:参数分为两种:定义时的参数叫形参,调用时的参数叫实参(实际实参可以是数值也可以是变量) 2:SQL语法 Create Function 函数名(形参名字 字段类型) returns 数据类型 3:案例演示 业务...
  • mysql函数之COALESCE函数

    千次阅读 2018-12-18 13:51:30
    #COALESCE是一个函数, (expression_1, expression_2, ...,expression_n)依次参考各参数表达式, 遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。 使用COALESCE在于大部分包含空值...
  • MySQL函数-条件判断函数

    千次阅读 2018-03-05 15:56:57
    1、IF(expr,v1,v2)函数 如果表达式expr成立,返回结果v1;否则,返回结果v2。 SELECT IF(1 &gt; 0,'正确','错误') -- 正确 2、IFNULL(v1,v2)函数 如果v1的值不为NULL,则返回v1,否则返回v2。 SELECT IFNULL...
  • MySQL函数(替换,正则)

    千次阅读 2019-05-06 17:31:58
    字段替换 SELECT REPLACE('aaa,ddd,fff',',','|'); 正则(可实现同字段多值模糊查询) select * from user where name regexp '张|王|李|小德子'; 字符串拼接 select CONCAT('%','三丰','%');...
  • MYSQL 函数/过程 运行参数问题

    千次阅读 2019-04-28 09:45:27
    在navicat中创建MYSQL 函数,保存时候会判断所写函数是否正确,如果不正确会无法保存,在navicat界面中是可以获得一些提醒的: 会告诉你具体问题出现在哪行等信息。 当传入参数为varchar()类型时,点击运行...
  • oracle与mysql函数转换

    千次阅读 2017-02-26 21:41:17
    函数是用来计算北京PK10期号的函数
  • MySQL函数之cast()

    千次阅读 2019-01-22 09:42:49
     cast()是一种数据类型转换的函数函数将任何类型的值转换为具有指定类型的值,语法格式如下所示: CAST ( expression AS data_type) expression:任何有效的MySQL表达式或者一些字符串数据。 AS:用于分隔...
  • 这是oracle自定义的函数,怎么把他转成mysql的 create or replace function fun_return_zjxl(in_taskId varchar2, in_work_no varchar2) return varchar2 is v_sum number(10);--质检平均完成量 v_num NUMBER(10)...
  • 一、使用IF函数 SELECT temp.* FROM (SELECT tp1.`ID` AS supplierCode, tp1.`SUPPLIER_NAME` AS supplierName, CASE WHEN tp1.`SUPPLIER_TYPE` IS NULL OR TRIM(tp1.`SUPPLIER_TYPE`) IN ( '企业', '电商'...
  • mysql函数大全之数字函数

    千次阅读 2018-05-01 10:46:24
    转载出处:http://blog.sina.com.cn/s/blog_4586764e0100h5ct.html原博主:无尽空虚mysql函数大全之字符函数:https://blog.csdn.net/hxfghgh/article/details/80152701mysql函数大全之时间函数:...
  • navicat创建MySQL函数

    千次阅读 2017-10-16 16:58:19
    右键函数,选择新建函数 第一个界面是参数设置界面,可以设置多个参数,也可以不写参数,设置完之后点击下一步; 第二个界面是返回值设置界面,可以设置也可以不设置; 点击完成 如何使用: SELECT qqq( ...
  • 1.mysql函数: 判断一个字符串里面包含几个‘;’ drop function if exists func_containumsplit; create function func_containumsplit(targetstr varchar(500)) returns INT begin-- 函数头 DECLARE total INT...
  • 首先我们打开navicat Navicat的每种函数可以接受基本类型、复合类型或组合为引数(参数),此外每种函数可以返回一个基本类型或复合类型,许多种函数可以接受或返回某些虚拟...MySQL函数高级属性主要涉及安全性、定义
  • 13、函数 函数的优点: 函数优点: 1、提高代码重用 2、简化操作 3、减少编译次数 4、减少与数据库服务器的连接次数提高效率 函数与存储过程的区别 存储过程:可以有返回值,按照业务需求来定,适合批量插入,适合...
  • MySQL函数的创建与管理(实验六)

    千次阅读 2019-11-23 17:42:50
    MySQL函数的创建与管理 1、查询所有学生选修课程的情况,包括学号,课程号,成绩以及成绩对应的等级,没有成绩者显示未考试。(90及以上:优秀;80及以上:良好;70及以上:中等;60及以上:及格;60以下:不及格。...
  • 使用 concat(s1,s2,…) 函数将所有客户的姓名与电话以“-”作为分隔符进行连接显示: select concat(cName,'-',phone) 客户联系方式 from ...LOCATE('市',address)) 地址 FROM customer >>知识点【第5章 MySQL 函数

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 503,049
精华内容 201,219
关键字:

mysql函数

mysql 订阅