GVKun编程网logo

MySQL-快速入门(4)MySQL函数(mysql函数大全)

1

本文的目的是介绍MySQL-快速入门的详细情况,特别关注4MySQL函数的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解MySQL-快速入门的机会,同时也不会遗漏关于

本文的目的是介绍MySQL-快速入门的详细情况,特别关注4MySQL函数的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解MySQL-快速入门的机会,同时也不会遗漏关于9、MySQL函数、coding++ :MySQL函数——FIND_IN_SET()、day7-mysql函数、Hibernate公式注释-MySql函数:INTERVAL,DAY的知识。

本文目录一览:

MySQL-快速入门(4)MySQL函数(mysql函数大全)

MySQL-快速入门(4)MySQL函数(mysql函数大全)

1、函数包括:数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数。

2、数学函数:绝对值函数、三角函数(正弦函数、余弦函数、正切函数、余切函数等)、对数函数、随机数函数。

  1》abs(X):绝对值函数。

  2》pi():圆周率函数,返回小数点后6位,即3.141593。

  3》sqrt(X):非负数的开平方。

  4》mod(X,Y):求余函数。即X%Y取余数。

  5》获取整数的函数:

     ceil(X):返回不小于X的最小整数,返回值转换为bigint。

     ceiling(X):返回不小于X的最小整数,返回值转换为bigint。

     floor(X):返回最大整数。

  6》获取随机数的函数

     rand():

     rand(X):相同X种子,返回的随机数是一样的。

  7》四舍五入:round(X)、round(x,y)、truncate(x,y)

  8》符号函数sign(X):

  9》幂运算pow(X,Y)、power(X,Y)、EXP(X)

  10》对数log(X)、log10(X)

  11》角度函数radians(X)、弧度函数degrees(X)

  12》正弦函数sin(X)、反正弦函数asin(X)

  13》余弦函数cos(X)、反余弦函数acos(X)

  14》正切函数tan(X)、反正切函数atan(X)、余切函数cot(X)

3、字符串函数

  1》char_length(str):计算字符数。

  2》length(str):计算字符串长度。

  3》concat(s1,s2,...)、concat_ws(x,s1,s2,...):合并字符串函数。第二个以指定的分隔符连接,同时忽略null。

  4》insert(s1,x,len,s2):字符串替换操作。

  5》lower(str)、lcase(str):全部转换成小写字符。

  6》upper(str)、ucase(str):全部转换成大写。

  7》left(s,n)、right(s,n):返回s开始到最左/最右n个字符。

  8》lpad(s1,len,s2)、rpad(s1,len,s2):len指定往字符串中s1的左/右填充的字符s2,如果len小于s1则s1被压缩返回。

  9》ltrim(s)、rtrim(s)、trim(s):删除空格函数。分别是删除左侧、右侧、两侧的空格。

  10》trim(s1 from s):删除指定字符串。删除字符串s中两端所有的子字符串s1。s1为可选项,在未指定情况下,删除空格。

  11》repeat(s,n):重复生成字符串。

  12》space(n)、replace(s,s1,s2):空格函数、替换函数。

  13》strcmp(s1,s2):比较字符串大小的函数。

  14》substring(s,n,len)、mid(s,n,len):获取子串。

  15》locate(str1,str)、position(str1 in str)、instr(str,str1):返回子字符串str1在str中的开始位置。

  16》reverse(s):字符串逆序函数。

  17》elt(N,字符串1,字符串2,...,字符串N):返回指定位置的字符串。类似于oracle的decode()。

  18》field(s,s1,s2,...):返回字符串s在s1,s2,...中第一次出现的位置(完全匹配),在找不到s的情况下,返回值为0。

  19》find_in_set(s1,s2):返回子串位置的函数(全匹配)。s2是一个以“,”分隔的字符串列表。

  20》make_set(x,s1,s2,...):选取字符串的函数。

4、日期和时间函数

  1》获取当前日期的函数、获取当前时间的函数:curdate()、current_date()、curtime()、current_time()

  2》获取当前日期和时间的函数:current_timestamp()、localtime()、now()、sysdate()。

  3》unix时间戳函数:unix_timestamp(date)。date可以是一个date类型字符串、datetime类型字符串、timestamp类型字符串或者一个当地时间的YYMMDD或YYYYMMDD格式的数字。from_unixtime(date)是它的互为反函数。

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

  5》获取月份的函数month(date)和monthname(date):前者返回对应的月份数字、后者返回对应的英文月份单词。

  6》获取星期的函数dayname(d)、dayofweek(d)、weekday(d):

  7》获取星期数的函数week(d)、weekofyear(d):

  8》获取天数的函数dayofyear(d)、dayofmonth(d):

  9》获取年份、季度、小时、分钟、秒钟的函数:

  10》获取日期的指定值的函数extract(type from date):

  11》时间和秒钟转换的函数:time_to_sec(time):

  12》时间和秒钟转换的函数:time_to_sec(time)。

  13》计算日期和时间的函数:date_add()、adddate()、date_sub()、subdate()、addtime()、subtime()、date_diff()。

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

       1>date_format(date,format):

       2>time_format(time,format):

       3>get_format(val_type,format_type):

5、条件判断函数:if、ifnull、case

  1》if(expr,v1,v2):

  2》ifnull(v1,v2):

  3》case expr when v1 then r1 [when v2 then r2] [else rN] end

6、系统信息函数

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

    1》version():返回MySQL服务器的版本字符串。

    2》connection_id():返回MySQL服务器当前连接的次数。

    3》show processlist或者show full processlist:显示有哪些线程在运行,不仅可以查看当前的所有连接数,还可以查看当前的连接状态,帮助识别出有问题的查询语句等。

    4》获取用户名的函数:user()、current_user / current_user()、system_user()、session_user()

    5》获取字符串的字符集和排序方式的函数:charset(str)

    6》获取最后一个自动生成的ID的值:last_insert_id(),自动返回最后一个insert、update为auto_increment列设置的第一个发生的值(比如逐条插入,当然这个函数得到的是最后一个id,但一条insert语句同时插入多条记录的时候,该函数返回的是第一条记录插入时的id)。

7、加密解密函数

  1》password(str):从明文str计算并返回加密后的密码字符串,当参数为null时,返回null。不可逆,不推荐用到个人应用程序中,因为MySQL服务器鉴定系统中使用了这种加密方式。

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

  3》encode(str,pswd_str):使用pswd_str作为密码,加密str。使用decode()解密结果,是一个和str长度相同的二进制字符串。

  4》decode(crypt_str,pswd_str):使用pswd_str作为密码,解密加密字符串crypt_str,crypt_str是由encode()返回的字符串。

8、其他函数

  1》格式化函数format(x,n):将数字x格式化。

  2》不同进制的数字进行转换的函数:

      1>conv(N,from_base,to_base):返回值为数值N的字符串表示,由from_base进制转换为to_base进制。

   3》IP地址与数字相互转换的函数:inet_aton(expr)。inet_ntoa(expr)互为反函数。

   4》加锁函数和解锁函数:

        1>get_lock(str,timeout)。

        2>解锁执行release_lock()或者链接断开(正常或非正常)。

        3>is_free_lock(str)检查名为str的锁是否可以使用(即没有被加锁)。

        4>is_used_lock(str):检查名为str的锁是否正在被使用(既没有被加锁)。

   5》重复执行指定操作的函数

       benchmark(count,expr):重复执行count次表达式expr。

   6》改变字符集的函数

      convert(...using...),带有using的convert()函数被用来在不同的字符集之间转换数据。

   7》改变数据类型的函数

       cast(x,AS type)、convert(x,type):将一个类型的值转换为另一个类型的值。可转换的type有:binary、char(n)、date、time、datetime、decimal、signed、unsigned。

9、MySQL函数

9、MySQL函数

MySQL中提供了许多内置函数,例如:

CHAR_LENGTH(str)
返回值为字符串str 的长度,长度的单位为字符。一个多字节字符算作一个单字符。
对于一个包含五个二字节字符集, LENGTH()返回值为 10, 而CHAR_LENGTH()的返回值为5。

CONCAT(str1,str2,...)
字符串拼接
如有任何一个参数为NULL ,则返回值为 NULL。
CONCAT_WS(separator,str1,str2,...)
字符串拼接(自定义连接符)
CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。

CONV(N,from_base,to_base)
进制转换
例如:
    SELECT CONV(''a'',16,2); 表示将 a 由16进制转换为2进制字符串表示

FORMAT(X,D)
将数字X 的格式写为''#,###,###.##'',以四舍五入的方式保留小数点后 D 位, 并将结果以字符串的形式返回。若  D 为 0, 则返回结果不带有小数点,或不含小数部分。
例如:
    SELECT FORMAT(12332.1,4); 结果为: ''12,332.1000''
INSERT(str,pos,len,newstr)
在str的指定位置插入字符串
    pos:要替换位置其实位置
    len:替换的长度
    newstr:新字符串
特别的:
    如果pos超过原字符串长度,则返回原字符串
    如果len超过原字符串长度,则由新字符串完全替换
INSTR(str,substr)
返回字符串 str 中子字符串的第一个出现位置。

LEFT(str,len)
返回字符串str 从开始的len位置的子序列字符。

LOWER(str)
变小写

UPPER(str)
变大写

LTRIM(str)
返回字符串 str ,其引导空格字符被删除。
RTRIM(str)
返回字符串 str ,结尾空格字符被删去。
SUBSTRING(str,pos,len)
获取字符串子序列

LOCATE(substr,str,pos)
获取子序列索引位置

REPEAT(str,count)
返回一个由重复的字符串str 组成的字符串,字符串str的数目等于count 。
若 count <= 0,则返回一个空字符串。
若str 或 count 为 NULL,则返回 NULL 。
REPLACE(str,from_str,to_str)
返回字符串str 以及所有被字符串to_str替代的字符串from_str 。
REVERSE(str)
返回字符串 str ,顺序和字符顺序相反。
RIGHT(str,len)
从字符串str 开始,返回从后边开始len个字符组成的子序列

SPACE(N)
返回一个由N空格组成的字符串。

SUBSTRING(str,pos) , SUBSTRING(str FROM pos) SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len)
不带有len 参数的格式从字符串str返回一个子字符串,起始于位置 pos。带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置 pos。 使用 FROM的格式为标准 SQL 语法。也可能对pos使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的pos 字符,而不是字符串的开头位置。在以下格式的函数中可以对pos 使用一个负值。

mysql> SELECT SUBSTRING(''Quadratically'',5);
    -> ''ratically''

mysql> SELECT SUBSTRING(''foobarbar'' FROM 4);
    -> ''barbar''

mysql> SELECT SUBSTRING(''Quadratically'',5,6);
    -> ''ratica''

mysql> SELECT SUBSTRING(''Sakila'', -3);
    -> ''ila''

mysql> SELECT SUBSTRING(''Sakila'', -5, 3);
    -> ''aki''

mysql> SELECT SUBSTRING(''Sakila'' FROM -4 FOR 2);
    -> ''ki''

TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) TRIM(remstr FROM] str)
返回字符串 str , 其中所有remstr 前缀和/或后缀都已被删除。若分类符BOTH、LEADIN或TRAILING中没有一个是给定的,则假设为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''

1、自定义函数

delimiter \\
create function f1(
    i1 int,
    i2 int)
returns int
BEGIN
    declare num int;
    set num = i1 + i2;
    return(num);
END \\
delimiter ;

2、删除函数

drop function func_name;

3、执行函数

# 获取返回值
declare @i VARCHAR(32);
select UPPER(''alex'') into @i;
SELECT @i;


# 在查询中使用
select f1(11,nid) ,name from tb2;

coding++ :MySQL函数——FIND_IN_SET()

coding++ :MySQL函数——FIND_IN_SET()

语法:FIND_IN_SET(str,strlist)

定义

1). 假如字符串 str 在由N子链组成的字符串列表 strlist 中,则返回值的范围在1到N之间。

2). 一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串。

3). 如果第一个参数是一个常数字符串,而第二个是typeSET列,则FIND_IN_SET()函数被优化,使用比特计算。

4). 如果 str 不在 strlist 或 strlist 为空字符串,则返回值为 0。

5). 如任意一个参数为 NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。

strlist:一个由英文逗号“,”链接的字符串,例如:"a,b,c,d",该字符串形式上类似于SET类型的值被逗号给链接起来。

示例:SELECT FIND_IN_SET(''b'',''a,b,c,d''); //返回值为2,即第2个值

//查询 9824 该值是否在 community_id 字段列中存在

SELECT * FROM `cc_stop_gas_notice` 
WHERE FIND_IN_SET(''9824'',`cc_stop_gas_notice`.`community_id`)

 

day7-mysql函数

day7-mysql函数

MySQL 字符串函数

CONCAT

字符串 s1,s2 等多个字符串合并为一个字符串

select CONCAT(''中国'',t.userfrom,city) from newsp_201_user t;

FORMAT

函数可以将数字字段进行格式化 "#,###.##", 将数字字段保留到小数点后 n 位,最后一位四舍五入。

SELECT FORMAT(250500.5634, 2);     -- 输出 250,500.56

LCASE、UCASE

将字符串的所有字母变成小写字母,UCASE是转成大写

SELECT LCASE(''RUNOOB'') -- runoob

LEFT

返回字段的前 n 个字符

SELECT LEFT(''runoob'',2) -- ru

MID

从字符串 s 的 start 位置截取长度为 length 的子字符串,同 substring功能一样

SELECT MID("RUNOOB", 2, 3) AS ExtractString; -- UNO

REPLACE

字符串 abc 中的字符 a 替换为字符 x

SELECT REPLACE(''abc'',''a'',''x'') --xbc

TRIM

去掉前后空格

SELECT TRIM(''    RUNOOB    '') AS TrimmedString;

 

MySQL 数字函数

ABS

返回绝对值

SELECT ABS(-1) -- 返回 1

AVG / COUNT / MIN / MAX / SUM

TRUNCATE

返回数值保留到小数点后 3 位的值(与 ROUND 最大的区别是不会进行四舍五入)

SELECT TRUNCATE(1.23456,3) -- 1.234

 

MySQL 时间函数

ADDDATE / DATE_ADD

计算起始日期 d 加上 n 天的日期

SELECT ADDDATE("2017-06-15", INTERVAL 10 DAY);    -- 2017-06-25
SELECT ADDDATE(''2011-11-11 11:11:11'', INTERVAL 5 MINUTE)

ADDTIME

 时间 t 加上 n 秒的时间

SELECT ADDTIME(''2011-11-11 11:11:11'', 5)  -- 2011-11-11 11:11:16 (秒)

 CURDATE和CURRENT_DATE

返回当前日期

SELECT CURDATE();   --  2018-09-19

CURTIME和CURRENT_TIME

返回当前时间

SELECT CURRENT_TIME();

 DATEDIFF

时间相差天数

SELECT DATEDIFF(''2001-01-01'',''2001-02-02'')    --  -32

DATE_FORMAT

时间格式化

SELECT DATE_FORMAT(''2011-11-11 11:11:11'',''%Y-%m-%d %r'')

DATE_SUB / SUBDATE

函数从日期减去指定的时间间隔

SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 2 DAY) AS OrderPayDate FROM Orders

NOW / SYSDATE

当前时间

select now();

TO_DAYS

计算日期 d 距离 0000 年 1 月 1 日的天数

SELECT TO_DAYS(''1901-01-01 01:01:01'')

 

MySQL高级函数

IFNULL

select user_name,IFNULL(email,"abc@163.com") from newsp_201_user;

ISNULL

select user_name,ISNULL(email) from newsp_201_user

注意:在查询字段的时候,MySQL 中处理 NULL 使用 IS NULL 和 IS NOT NULL 运算符

IF

如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2。

SELECT IF(sex = 0,''男'',''女'')

 

  其他函数请参照:https://www.runoob.com/mysql/mysql-functions.html

 

Hibernate公式注释-MySql函数:INTERVAL,DAY

Hibernate公式注释-MySql函数:INTERVAL,DAY

我有代码:

@Id@Column(name = "id")@GeneratedValueprivate int id;@Formula(value = "(SELECT count(history.city_id) FROM history where history.ts > (now() - INTERVAL 30 DAY) and history.city_id = id)")private int last30daysUpdates;

因此,hiberante将此公式解析为:

 ...where            history.ts > (                now() - entitycity0_.INTERVAL 30 entitycity0_.DAY            ) ...

错误是:

您的SQL语法有误;查看与您的MySQL服务器版本相对应的手册以获取正确的语法,以在‘30Entitycity0_.DAY附近使用)

我怎样说hibernate和间隔是MysqL的功能?可能吗?

谢谢。

答案1

小编典典

您使用哪种MySQL语言?如果使用MySqlDialect或MySql5Dialect,则可以使用以下命令:

SELECT count(history.city_id) FROM history where timediff(now(), history.ts) < ''720'' and history.city_id = id

或定义新的hibernate功能

public class ExtendedMySQL5Dialect extends MySQL5Dialect {        public ExtendedMySQL5Dialect()         {           super();           registerFunction( "date_sub_interval", new SQLFunctionTemplate( Hibernate.DATE, "date_sub(?1, INTERVAL ?2 ?3)" ) );           registerFunction( "date_add_interval", new SQLFunctionTemplate( Hibernate.DATE, "date_add(?1, INTERVAL ?2 ?3)" ) );                   }}

查询:

History.ts < date_sub_interval(now(), 30, DAY)

今天的关于MySQL-快速入门4MySQL函数的分享已经结束,谢谢您的关注,如果想了解更多关于9、MySQL函数、coding++ :MySQL函数——FIND_IN_SET()、day7-mysql函数、Hibernate公式注释-MySql函数:INTERVAL,DAY的相关知识,请在本站进行查询。

本文标签: