RDBMS之常用函数

举报
tea_year 发表于 2023/12/29 21:10:55 2023/12/29
【摘要】 第7章​ 常用函数本章学习目标​ 熟练掌握字符串函数​ 熟练掌握数学函数​ 熟练掌握日期时间函数​ 掌握系统信息函数​ 掌握格式化函数MySQL数据库中提供了很丰富的函数,包括字符串函数、数学函数、日期时间函数、格式化函数和系统信息函数等,通过这些函数,可以简化用户的操作,例如,可以很方便地将多个字符串连接在一起,可以很方便获取当前系统时间等,本章将详细讲解MySQL的常用函数。7...

第7章​ 常用函数

本章学习目标

​ 熟练掌握字符串函数

​ 熟练掌握数学函数

​ 熟练掌握日期时间函数

​ 掌握系统信息函数

​ 掌握格式化函数

MySQL数据库中提供了很丰富的函数,包括字符串函数、数学函数、日期时间函数、格式化函数和系统信息函数等,通过这些函数,可以简化用户的操作,例如,可以很方便地将多个字符串连接在一起,可以很方便获取当前系统时间等,本章将详细讲解MySQL的常用函数。

7.1​ 字符串函数

字符串函数非常实用,主要用于对字符串查询、分割、去空格和拼接等操作,接下来将详细讲解字符串函数的相关内容。

7.1.1​ ASCII

ASCII函数用于返回ASCII代码值,ASCII函数的语法格式如下所示。

SELECT ASCII(str);

以上语法格式中,ASCII函数会返回str字符串最左面字符的ASCII代码值,如果str是空字符串,返回0,如果str是NULL,返回NULL,接下来通过具体案例演示ASCII函数的使用。

例7-1​ 使用ASCII函数得到字符a的ASCII代码值,SQL语句如下所示。

mysql> SELECT ASCII('a');

+------------+

| ASCII('a') |

+------------+

| 97 |

+------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符a的ASCII代码值为97。

例7-2​ 使用ASCII函数得到字符串abc的ASCII代码值,SQL语句如下所示。

mysql> SELECT ASCII('abc');

+--------------+

| ASCII('abc') |

+--------------+

| 97 |

+--------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符串abc的ASCII代码值为97,实际上这是字符a的ASCII代码值,ASCII函数只返回字符串最左边字符的ASCII代码值。

例7-3​ 使用ASCII函数得到空字符串的ASCII代码值,SQL语句如下所示。

mysql> SELECT ASCII('');

+-----------+

| ASCII('') |

+-----------+

| 0 |

+-----------+

1 row in set (0.00 sec)

从以上执行结果可看出,空字符串的ASCII代码值为0。

例7-4​ 使用ASCII函数得到NULL的ASCII代码值,SQL语句如下所示。

mysql> SELECT ASCII(NULL);

+-------------+

| ASCII(NULL) |

+-------------+

| NULL |

+-------------+

1 row in set (0.00 sec)

从以上执行结果可看出,NULL的ASCII代码值为NULL。

7.1.2​ BIT_LENGTH

BIT_LENGTH函数用于返回字符串的比特值,BIT_LENGTH函数的语法格式如下所示。

SELECT BIT_LENGTH(str);

以上语法格式中,BIT_LENGTH函数会返回str字符串的比特值,如果str是空字符串,返回0,如果str是NULL,返回NULL,接下来通过具体案例演示BIT_LENGTH函数的使用。

例7-5​ 使用BIT_LENGTH函数得到字符串abc的比特值,SQL语句如下所示。

mysql> SELECT BIT_LENGTH('abc');

+-------------------+

| BIT_LENGTH('abc') |

+-------------------+

| 24 |

+-------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符串abc的比特值为24。

例7-6​ 使用BIT_LENGTH函数得到空字符串的比特值,SQL语句如下所示。

mysql> SELECT BIT_LENGTH('');

+----------------+

| BIT_LENGTH('') |

+----------------+

| 0 |

+----------------+

1 row in set (0.00 sec)

从以上执行结果可看出,空字符串的比特值为24。

例7-7​ 使用BIT_LENGTH函数得到NULL的比特值,SQL语句如下所示。

mysql> SELECT BIT_LENGTH(NULL);

+------------------+

| BIT_LENGTH(NULL) |

+------------------+

| NULL |

+------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,NULL的比特值为NULL。

7.1.3​ CONCAT

CONCAT函数用于连接字符串,CONCAT函数的语法格式如下所示。

SELECT CONCAT(str1,str2,……,strn);

以上语法格式中,CONCAT函数会将多个字符串拼接,返回拼接后的字符串,如果其中有参数为NULL,则返回NULL,如果有数字参数,则被转换为等价的字符串形式,接下来通过具体案例演示CONCAT函数的使用。

例7-8​ 使用CONCAT函数拼接字符a、b和c,SQL语句如下所示。

mysql> SELECT CONCAT('a','b','c');

+---------------------+

| CONCAT('a','b','c') |

+---------------------+

| abc |

+---------------------+

1 row in set (0.04 sec)

从以上执行结果可看出,字符a、b和c被成功拼接。

例7-9​ 使用CONCAT函数拼接字符a、b和NULL,SQL语句如下所示。

mysql> SELECT CONCAT('a','b',NULL);

+----------------------+

| CONCAT('a','b',NULL) |

+----------------------+

| NULL |

+----------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,拼接的参数中含义NULL,则拼接结果返回NULL。

例7-10​ 使用CONCAT函数拼接字符a、b和数字100,SQL语句如下所示。

mysql> SELECT CONCAT('a','b',100);

+---------------------+

| CONCAT('a','b',100) |

+---------------------+

| ab100 |

+---------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,拼接的参数中含义数字,则被转换为等价的字符串形式进行拼接。

7.1.4​ CONCAT_WS

CONCAT_WS函数用于连接字符串,并且可以自定义字符分隔符,CONCAT_WS函数的语法格式如下所示。

SELECT CONCAT_WS(sep,str1,str2,……,strn);

以上语法格式中,CONCAT_WS函数会将多个字符串拼接,并且用sep进行分隔,返回拼接后的字符串,如果其中有参数为NULL,则NULL不显示,如果有数字参数,则被转换为等价的字符串形式,接下来通过具体案例演示CONCAT_WS函数的使用。

例7-11​ 使用CONCAT_WS函数拼接字符a、b和c,并用*分隔,SQL语句如下所示。

mysql> SELECT CONCAT_WS('*','a','b','c');

+----------------------------+

| CONCAT_WS('*','a','b','c') |

+----------------------------+

| a*b*c |

+----------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符a、b和c被成功拼接,并且用*进行了分隔。

例7-12​ 使用CONCAT_WS函数拼接字符a、b和NULL,并用%分隔,SQL语句如下所示。

mysql> SELECT CONCAT_WS('%','a','b',NULL);

+-----------------------------+

| CONCAT_WS('%','a','b',NULL) |

+-----------------------------+

| a%b |

+-----------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符a、b被成功拼接,并且用%进行了分隔,NULL不显示。

例7-13​ 使用CONCAT_WS函数拼接字符a、b和数字6,并用&分隔,SQL语句如下所示。

mysql> SELECT CONCAT_WS('&','a','b',6);

+--------------------------+

| CONCAT_WS('&','a','b',6) |

+--------------------------+

| a&b&6 |

+--------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,拼接的参数中含义数字,则被转换为等价的字符串形式进行拼接,并且用&进行了分隔。

7.1.5​ INSERT

INSERT函数用于将字符串的指定位置替换成指定字符,并返回结果,INSERT函数的语法格式如下所示。

SELECT INSERT(str,x,y,instr);

以上语法格式中,INSERT函数会将字符串str从第x位置开始,x从1开始计算,y个字符的子串替换为字符串instr,并将结果返回,接下来通过具体案例演示INSERT函数的使用。

例7-14​ 使用INSERT函数将字符串hello中的ll替换为**,SQL语句如下所示。

mysql> SELECT INSERT('hello',3,2,'**');

+--------------------------+

| INSERT('hello',3,2,'**') |

+--------------------------+

| he**o |

+--------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符串hello中的ll替换为**,3代表从第三个字符开始,2代表替换两个字符。

例7-15​ 使用INSERT函数将字符串hello中的后三个字母替换为@,SQL语句如下所示。

mysql> SELECT INSERT('hello',3,3,'@');

+-------------------------+

| INSERT('hello',3,3,'@') |

+-------------------------+

| he@ |

+-------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,hello中的后三个字母替换为了@,第一个3代表从第三个字符开始,第二个3代表替换三个字符。

7.1.6​ FIND_IN_SET

FIND_IN_SET函数用于将查找指定字符在字符串集合中的位置,并返回结果FIND_IN_SET函数的语法格式如下所示

SELECT FIND_IN_SET(str,list);

以上语法格式中,FIND_IN_SET函数会查找list中是否存在str,若存在则返回位置,位置的下标从1开始计算,若不存在,则返回0,接下来通过具体案例演示FIND_IN_SET函数的使用。

例7-16​ 使用FIND_IN_SET函数查找字符'a'在集合'b,c,d,a,e'中的位置,SQL语句如下所示。

mysql> SELECT FIND_IN_SET('a','b,c,d,a,e');

+------------------------------+

| FIND_IN_SET('a','b,c,d,a,e') |

+------------------------------+

| 4 |

+------------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符'a'在集合'b,c,d,a,e'中的位置为4。

例7-17​ 使用FIND_IN_SET函数查找字符'x'在集合'b,c,d,a,e'中的位置,SQL语句如下所示。

mysql> SELECT FIND_IN_SET('x','b,c,d,a,e');

+------------------------------+

| FIND_IN_SET('x','b,c,d,a,e') |

+------------------------------+

| 0 |

+------------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,因为字符'x'在集合'b,c,d,a,e'中不存在,所以返回0。

7.1.7​ LCASE或LOWER

LCASELOWER函数用于将字符串中所有字母转换为小写,并返回结果LCASELOWER函数的语法格式如下所示

SELECT LCASE|LOWER(str);

以上语法格式中,LCASE或LOWER函数会将str中所有字符转换为小写,并返回结果,接下来通过具体案例演示LCASE和LOWER函数的使用。

例7-18​ 使用LCASE函数将'AA'转换为小写,SQL语句如下所示。

mysql> SELECT LCASE('AA');

+-------------+

| LCASE('AA') |

+-------------+

| aa |

+-------------+

1 row in set (0.02 sec)

从以上执行结果可看出,字符串'AA'成功转换为了小写并返回。

例7-19​ 使用LOWER函数将'AAbb'转换为小写,SQL语句如下所示。

mysql> SELECT LOWER('AAbb');

+---------------+

| LOWER('AAbb') |

+---------------+

| aabb |

+---------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符串'AAbb'中的大写字母成功转换为了小写并返回,已经是小写的字母则不变。

7.1.8​ UCASE或UPPER

UCASE或UPPER函数用于将字符串中所有字母转换为大写,并返回结果,UCASE和UPPER函数的语法格式如下所示。

SELECT UCASE|UPPER(str);

以上语法格式中,UCASE或UPPER函数会将str中所有字符转换为大写,并返回结果,接下来通过具体案例演示UCASE和UPPER函数的使用。

例7-20​ 使用UCASE函数将'aa'转换为大写,SQL语句如下所示。

mysql> SELECT UCASE('aa');

+-------------+

| UCASE('aa') |

+-------------+

| AA |

+-------------+

1 row in set (0.02 sec)

从以上执行结果可看出,字符串'aa'成功转换为了大写并返回。

例7-21​ 使用UPPER函数将'AAbb'转换为大写,SQL语句如下所示。

mysql> SELECT UPPER('AAbb');

+---------------+

| UPPER('AAbb') |

+---------------+

| AABB |

+---------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符串'AAbb'中的小写字母成功转换为了大写并返回,已经是大写的字母则不变。

7.1.9​ LEFT

LEFT函数用于返回字符串从左边起,指定个数的字符,LEFT函数的语法格式如下所示。

SELECT LEFT(str,x);

以上语法格式中,LEFT函数会将str中最左边的x个字符返回,x从1开始计算,如果str为NULL,无论x为何值,都返回NULL,接下来通过具体案例演示LEFT函数的使用。

例7-22​ 使用LEFT函数查询字符串hello最左边的3个字符,SQL语句如下所示。

mysql> SELECT LEFT('hello',3);

+-----------------+

| LEFT('hello',3) |

+-----------------+

| hel |

+-----------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符串hello中最左边3个字符为hel,3代表从最左边开始查询3个字符。

例7-23​ 使用LEFT函数查询NULL的前2个字符,SQL语句如下所示。

mysql> SELECT LEFT(NULL,2);

+--------------+

| LEFT(NULL,2) |

+--------------+

| NULL |

+--------------+

1 row in set (0.00 sec)

从以上执行结果可看出,使用LEFT函数查询NULL的值,结果为NULL。

7.1.10​ RIGHT

RIGHT函数用于返回字符串从右边起,指定个数的字符,RIGHT函数的语法格式如下所示。

SELECT RIGHT(str,x);

以上语法格式中,RIGHT函数会将str中最右边的x个字符返回,x从1开始计算,如果str为NULL,无论x为何值,都返回NULL,接下来通过具体案例演示RIGHT函数的使用。

例7-24​ 使用RIGHT函数查询字符串hello最右边的3个字符,SQL语句如下所示。

mysql> SELECT RIGHT('hello',3);

+------------------+

| RIGHT('hello',3) |

+------------------+

| llo |

+------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符串hello中最右边3个字符为llo,3代表从最右边开始查询3个字符。

例7-25​ 使用RIGHT函数查询NULL的后2个字符,SQL语句如下所示。

mysql> SELECT RIGHT(NULL,2);

+---------------+

| RIGHT(NULL,2) |

+---------------+

| NULL |

+---------------+

1 row in set (0.00 sec)

从以上执行结果可看出,使用RIGHT函数查询NULL的值,结果为NULL。

7.1.11​ LENGTH

LENGTH函数用于返回字符串的长度,LENGTH函数的语法格式如下所示。

SELECT LENGTH(str);

以上语法格式中,LENGTH函数会将str的长度返回,如果str为空字符串,则返回0,如果str为NULL,则返回NULL,接下来通过具体案例演示LENGTH函数的使用。

例7-26​ 使用LENGTH函数查询字符串hello的长度,SQL语句如下所示。

mysql> SELECT LENGTH('hello');

+-----------------+

| LENGTH('hello') |

+-----------------+

| 5 |

+-----------------+

1 row in set (0.01 sec)

从以上执行结果可看出,字符串hello的长度为5。

例7-27​ 使用LENGTH函数查询空字符串的长度,SQL语句如下所示。

mysql> SELECT LENGTH('');

+------------+

| LENGTH('') |

+------------+

| 0 |

+------------+

1 row in set (0.00 sec)

从以上执行结果可看出,空字符串的长度为0。

例7-28​ 使用LENGTH函数查询NULL的长度,SQL语句如下所示。

mysql> SELECT LENGTH(NULL);

+--------------+

| LENGTH(NULL) |

+--------------+

| NULL |

+--------------+

1 row in set (0.00 sec)

从以上执行结果可看出,如果被查询的为NULL,则返回NULL。

7.1.12​ LTRIM

LTRIM函数用于去掉字符串首部的空格,LTRIM函数的语法格式如下所示。

SELECT LTRIM(str);

以上语法格式中,LTRIM函数会将str首部的空格去掉,并返回结果,如果字符串中间或尾部有空格则不会去掉,接下来通过具体案例演示LTRIM函数的使用。

例7-29​ 使用LTRIM函数去掉字符串' abc'首部的空格,SQL语句如下所示。

mysql> SELECT LTRIM(' abc');

+----------------+

| LTRIM(' abc') |

+----------------+

| abc |

+----------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符串' abc'首部的空格被去掉。

例7-30​ 使用LTRIM函数去掉字符串' a bc'首部的空格,SQL语句如下所示。

mysql> SELECT LTRIM(' a bc');

+------------------+

| LTRIM(' a bc') |

+------------------+

| a bc |

+------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符串' a bc'首部的空格被去掉,而中间的空格不会被去掉。

7.1.13​ RTRIM

RTRIM函数用于去掉字符串尾部的空格,RTRIM函数的语法格式如下所示。

SELECT RTRIM(str);

以上语法格式中,RTRIM函数会将str尾部的空格去掉,并返回结果,如果字符串中间或首部有空格则不会去掉,接下来通过具体案例演示RTRIM函数的使用。

例7-31​ 使用RTRIM函数去掉字符串'abc '尾部的空格,SQL语句如下所示。

mysql> SELECT RTRIM('abc ');

+----------------+

| RTRIM('abc ') |

+----------------+

| abc |

+----------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符串'abc '尾部的空格被去掉,并返回结果,为了进一步验证尾部空格被去掉,可以使用LENGTH函数查看结果字符串的长度,SQL语句如下所示。

mysql> SELECT LENGTH(RTRIM('abc '));

+------------------------+

| LENGTH(RTRIM('abc ')) |

+------------------------+

| 3 |

+------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,结果字符串的长度为3,证明尾部空格成功去掉。

例7-32​ 使用RTRIM函数去掉字符串' a bc '尾部的空格,SQL语句如下所示。

mysql> SELECT RTRIM(' a bc ');

+--------------------+

| RTRIM(' a bc ') |

+--------------------+

| a bc |

+--------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符串' a bc '尾部的空格被去掉,而中间和首部的空格不会被去掉,并返回结果,为了进一步验证尾部空格被去掉,可以使用LENGTH函数查看结果字符串的长度,SQL语句如下所示。

mysql> SELECT LENGTH(RTRIM(' a bc '));

+----------------------------+

| LENGTH(RTRIM(' a bc ')) |

+----------------------------+

| 7 |

+----------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,结果字符串的长度为7,证明尾部空格成功去掉。

7.1.14​ TRIM

TRIM函数用于去掉字符串首部和尾部的空格,TRIM函数的语法格式如下所示。

SELECT TRIM(str);

以上语法格式中,TRIM函数会将str首部和尾部的空格都去掉,并返回结果,如果字符串中间有空格则不会去掉,接下来通过具体案例演示TRIM函数的使用。

例7-33​ 使用TRIM函数去掉字符串' abc '首部和尾部的空格,SQL语句如下所示。

mysql> SELECT TRIM(' abc ');

+-----------------+

| TRIM(' abc ') |

+-----------------+

| abc |

+-----------------+

1 row in set (0.01 sec)

从以上执行结果可看出,字符串' abc '首部和尾部的空格都被去掉,并返回结果,为了进一步验证尾部空格被去掉,可以使用LENGTH函数查看结果字符串的长度,SQL语句如下所示。

mysql> SELECT LENGTH(TRIM(' abc '));

+-------------------------+

| LENGTH(TRIM(' abc ')) |

+-------------------------+

| 3 |

+-------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,结果字符串的长度为3,证明尾部空格也成功去掉。

例7-34​ 使用TRIM函数去掉字符串' a bc '首部和尾部的空格,SQL语句如下所示。

mysql> SELECT TRIM(' a bc ');

+-------------------+

| TRIM(' a bc ') |

+-------------------+

| a bc |

+-------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符串' a bc '首部和尾部的空格都被去掉,而中间的空格不会被去掉,并返回结果,为了进一步验证尾部空格被去掉,可以使用LENGTH函数查看结果字符串的长度,SQL语句如下所示。

mysql> SELECT LENGTH(TRIM(' a bc '));

+---------------------------+

| LENGTH(TRIM(' a bc ')) |

+---------------------------+

| 5 |

+---------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,结果字符串的长度为5,证明尾部空格也成功去掉。

7.1.15​ POSITION

POSITION函数用于查询指定子串在字符串中的位置并返回,位置从1开始计算,POSITION函数的语法格式如下所示。

SELECT POSITION(substr IN str);

以上语法格式中,POSITION函数会substr在str中的位置查询到,并返回结果,如果str中不包含substr,则返回0,接下来通过具体案例演示POSITION函数的使用。

例7-35​ 使用POSITION函数查询字符'e'在字符串'hello'中的位置,SQL语句如下所示。

mysql> SELECT POSITION('e' IN 'hello');

+--------------------------+

| POSITION('e' IN 'hello') |

+--------------------------+

| 2 |

+--------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符'e'在字符串'hello'中的位置为2。

例7-36​ 使用POSITION函数查询字符'x'在字符串'hello'中的位置,SQL语句如下所示。

mysql> SELECT POSITION('x' IN 'hello');

+--------------------------+

| POSITION('x' IN 'hello') |

+--------------------------+

| 0 |

+--------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符串'hello'中不包含字符'x',所以返回0。

7.1.16​ REPEAT

REPEAT函数用于将指定字符串重复指定次数,并返回结果,REPEAT函数的语法格式如下所示。

SELECT REPEAT(str,x);

以上语法格式中,REPEAT函数会将str重复x次,并返回结果,如果x为0,则返回结果为空,如果x为NULL,则返回结果为NULL,接下来通过具体案例演示REPEAT函数的使用。

例7-37​ 使用REPEAT函数将字符串abc重复3次,并返回结果,SQL语句如下所示。

mysql> SELECT REPEAT('abc',3);

+-----------------+

| REPEAT('abc',3) |

+-----------------+

| abcabcabc |

+-----------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符串abc重复3次,并返回结果。

例7-38​ 使用REPEAT函数指定字符串abc重复次数为0,并返回结果,SQL语句如下所示。

mysql> SELECT REPEAT('abc',0);

+-----------------+

| REPEAT('abc',0) |

+-----------------+

| |

+-----------------+

1 row in set (0.00 sec)

从以上执行结果可看出,重复次数指定为0,返回结果为空。

例7-39​ 使用REPEAT函数指定字符串abc重复次数为NULL,并返回结果,SQL语句如下所示。

mysql> SELECT REPEAT('abc',NULL);

+--------------------+

| REPEAT('abc',NULL) |

+--------------------+

| NULL |

+--------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,重复次数指定为NULL,返回结果为NULL。

7.1.17​ REVERSE

REVERSE函数用于返回颠倒字符顺序的字符串REVERSE函数的语法格式如下所示

SELECT REVERSE(str);

以上语法格式中,REVERSE函数会将str字符串的字符顺序颠倒,并返回结果,如果str为NULL,则返回结果为NULL,接下来通过具体案例演示REVERSE函数的使用。

例7-40​ 使用REVERSE函数将字符串abc颠倒顺序,并返回结果,SQL语句如下所示。

mysql> SELECT REVERSE('abc');

+----------------+

| REVERSE('abc') |

+----------------+

| cba |

+----------------+

1 row in set (0.00 sec)

从以上执行结果可看出,字符串abc颠倒顺序,并返回结果。

例7-41​ 使用REVERSE函数将NULL返回结果,SQL语句如下所示。

mysql> SELECT REVERSE(NULL);

+---------------+

| REVERSE(NULL) |

+---------------+

| NULL |

+---------------+

1 row in set (0.00 sec)

从以上执行结果可看出,指定内容为NULL,则返回结果为NULL。

7.1.18​ STRCMP

STRCMP函数用于比较两个字符串,STRCMP函数的语法格式如下所示。

SELECT STRCMP(str1,str2);

以上语法格式中,STRCMP函数会比较字符串str1和str2,并返回结果,如果两个字符串相同,则返回0,如果根据当前排序次序,str1小于str2,则返回-1,否则返回1,接下来通过具体案例演示STRCMP函数的使用。

例7-42​ 使用STRCMP函数比较字符串abc和字符串abc,并返回结果,SQL语句如下所示。

mysql> SELECT STRCMP('abc','abc');

+---------------------+

| STRCMP('abc','abc') |

+---------------------+

| 0 |

+---------------------+

1 row in set (0.02 sec)

从以上执行结果可看出,STRCMP函数比较两个相同的字符串,返回结果为0。

例7-43​ 使用STRCMP函数比较字符串a1和字符串a2,并返回结果,SQL语句如下所示。

mysql> SELECT STRCMP('a1','a2');

+-------------------+

| STRCMP('a1','a2') |

+-------------------+

| -1 |

+-------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,STRCMP函数比较字符串的第一个字符串小于第二个字符串,返回结果为-1。

例7-44​ 使用STRCMP函数比较字符串a2和字符串a1,并返回结果,SQL语句如下所示。

mysql> SELECT STRCMP('a2','a1');

+-------------------+

| STRCMP('a2','a1') |

+-------------------+

| 1 |

+-------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,STRCMP函数比较字符串的第一个字符串大于第二个字符串,返回结果为1。

7.2​ 数学函数

数学函数是MySQL中常用的一类函数,主要用于处理数字,包括整型、浮点数等,接下来将详细讲解数学函数的相关内容。

7.2.1​ ABS

ABS函数用于返回指定数值的绝对值,ABS函数的语法格式如下所示。

SELECT ABS(x);

以上语法格式中,ABS函数会返回x的绝对值,如果x为0,则返回0,如果x为NULL,则返回NULL,接下来通过具体案例演示ABS函数的使用。

例7-45​ 使用ABS函数求出-2的绝对值,SQL语句如下所示。

mysql> SELECT ABS(-2);

+---------+

| ABS(-2) |

+---------+

| 2 |

+---------+

1 row in set (0.03 sec)

从以上执行结果可看出,-2的绝对值为2。

例7-46​ 使用ABS函数求出0的绝对值,SQL语句如下所示。

mysql> SELECT ABS(0);

+--------+

| ABS(0) |

+--------+

| 0 |

+--------+

1 row in set (0.00 sec)

从以上执行结果可看出,0的绝对值仍然为0。

例7-47​ 使用ABS函数求值,指定数值为NULL,SQL语句如下所示。

mysql> SELECT ABS(NULL);

+-----------+

| ABS(NULL) |

+-----------+

| NULL |

+-----------+

1 row in set (0.00 sec)

从以上执行结果可看出,ABS查询数值为NULL的内容,结果返回NULL。

7.2.2​ BIN

BIN函数用于返回指定数值的二进制数,BIN函数的语法格式如下所示。

SELECT BIN(x);

以上语法格式中,BIN函数会返回x的二进制数,如果x为NULL,则返回NULL,接下来通过具体案例演示BIN函数的使用。

例7-48​ 使用BIN函数求出255的二进制数,SQL语句如下所示。

mysql> SELECT BIN(255);

+----------+

| BIN(255) |

+----------+

| 11111111 |

+----------+

1 row in set (0.00 sec)

从以上执行结果可看出,255转换为二进制后的值是11111111。

例7-49​ 使用BIN函数求二进制数,指定内容为NULL,SQL语句如下所示。

mysql> SELECT BIN(NULL);

+-----------+

| BIN(NULL) |

+-----------+

| NULL |

+-----------+

1 row in set (0.01 sec)

从以上执行结果可看出,BIN查询数值为NULL的内容,结果返回NULL。

7.2.3​ CEILING

CEILING函数用于返回不小于指定数值的最小整数值,CEILING函数的语法格式如下所示。

SELECT CEILING(x);

以上语法格式中,CEILING函数会返回不小于x的最小整数值,如果x为NULL,则返回NULL,接下来通过具体案例演示CEILING函数的使用。

例7-50​ 使用CEILING函数求出不小于5.5的最小整数值,SQL语句如下所示。

mysql> SELECT CEILING(5.5);

+--------------+

| CEILING(5.5) |

+--------------+

| 6 |

+--------------+

1 row in set (0.03 sec)

从以上执行结果可看出,不小于5.5的最小整数值为6。

例7-51​ 使用CEILING函数求出不小于8的最小整数值,SQL语句如下所示。

mysql> SELECT CEILING(8);

+------------+

| CEILING(8) |

+------------+

| 8 |

+------------+

1 row in set (0.00 sec)

从以上执行结果可看出,不小于8的最小整数值仍然为8。

7.2.4​ FLOOR

FLOOR函数用于返回不大于指定数值的最大整数值,FLOOR函数的语法格式如下所示。

SELECT FLOOR(x);

以上语法格式中,FLOOR函数会返回不大于x的最大整数值,如果x为NULL,则返回NULL,接下来通过具体案例演示FLOOR函数的使用。

例7-52​ 使用FLOOR函数求出不大于5.5的最大整数值,SQL语句如下所示。

mysql> SELECT FLOOR(5.5);

+------------+

| FLOOR(5.5) |

+------------+

| 5 |

+------------+

1 row in set (0.00 sec)

从以上执行结果可看出,不大于5.5的最大整数值为5。

例7-53​ 使用FLOOR函数求出不大于8的最大整数值,SQL语句如下所示。

mysql> SELECT FLOOR(8);

+----------+

| FLOOR(8) |

+----------+

| 8 |

+----------+

1 row in set (0.00 sec)

从以上执行结果可看出,不大于8的最大整数值仍然为8。

7.2.5​ GREATEST

GREATEST函数用于返回集合中最大的值,GREATEST函数的语法格式如下所示。

SELECT GREATEST(x1,x2,……,xn);

以上语法格式中,GREATEST函数会返回集合中最大的值,接下来通过具体案例演示GREATEST函数的使用。

例7-54​ 使用GREATEST函数求22,40,102,89中最大的值,SQL语句如下所示。

mysql> SELECT GREATEST(22,40,102,89);

+------------------------+

| GREATEST(22,40,102,89) |

+------------------------+

| 102 |

+------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,通过GREATEST函数计算得出4个参数中最大值为102。。

7.2.6​ LEAST

LEAST函数用于返回集合中最小的值,LEAST函数的语法格式如下所示。

SELECT LEAST(x1,x2,……,xn);

以上语法格式中,LEAST函数会返回集合中最小的值,接下来通过具体案例演示LEAST函数的使用。

例7-55​ 使用LEAST函数求60,46,90,305中最小的值,SQL语句如下所示。

mysql> SELECT LEAST(60,46,90,305);

+---------------------+

| LEAST(60,46,90,305) |

+---------------------+

| 46 |

+---------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,通过LEAST函数计算得出4个参数中最小值为46。

7.2.7​ MOD

MOD函数用于返回两个相除后的余数MOD函数的语法格式如下所示

SELECT MOD(M,N);

以上语法格式中,MOD函数会返回M除以N后的余数,接下来通过具体案例演示MOD函数的使用。

例7-56​ 使用MOD函数求10除以3的余数,SQL语句如下所示。

mysql> SELECT MOD(10,3);

+-----------+

| MOD(10,3) |

+-----------+

| 1 |

+-----------+

1 row in set (0.00 sec)

从以上执行结果可看出,10除以3的余数为1。

7.2.8​ PI

PI函数用于返回圆周率,PI函数的语法格式如下所示。

SELECT PI();

以上语法格式中,PI函数会返回圆周率,也就是PI的值,接下来通过具体案例演示PI函数的使用。

例7-57​ 求出圆周率的值,SQL语句如下所示。

mysql> SELECT PI();

+----------+

| PI() |

+----------+

| 3.141593 |

+----------+

1 row in set (0.01 sec)

从以上执行结果可看出,PI函数返回了圆周率的值,并保留六位小数。

7.2.9​ RAND

RAND函数用于返回一个0至1的随机数RAND函数的语法格式如下所示

SELECT RAND();

以上语法格式中,RAND函数会返回一个0至1的随机数,接下来通过具体案例演示RAND函数的使用。

例7-58​ 使用RAND函数求一个0至1的随机数,SQL语句如下所示。

mysql> SELECT RAND();

+--------------------+

| RAND() |

+--------------------+

| 0.9816054533995738 |

+--------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,RAND函数求出了一个大于0且小于1的函数。

7.2.10​ ROUND

ROUND函数用于返回指定数值四舍五入后的值,ROUND函数的语法格式如下所示。

SELECT ROUND(x);

以上语法格式中,ROUND函数会返回x四舍五入后的值,接下来通过具体案例演示ROUND函数的使用。

例7-59​ 使用ROUND函数求6.6四舍五入后的值,SQL语句如下所示。

mysql> SELECT ROUND(6.6);

+-------------+

| ROUND(6.6) |

+-------------+

| 7 |

+-------------+

1 row in set (0.00 sec)

从以上执行结果可看出,6.6四舍五入后的值为7。

例7-60​ 使用ROUND函数求25.2四舍五入后的值,SQL语句如下所示。

mysql> SELECT ROUND(25.2);

+-------------+

| ROUND(25.2) |

+-------------+

| 25 |

+-------------+

1 row in set (0.00 sec)

从以上执行结果可看出,25.2四舍五入后的值为25。

7.2.11​ TRUNCATE

TRUNCATE函数用于返回指定数值保留指定位小数,并返回结果,TRUNCATE函数的语法格式如下所示。

SELECT TRUNCATE(x,y);

以上语法格式中,TRUNCATE函数会返回x保留y位小数的结果,接下来通过具体案例演示TRUNCATE函数的使用。

例7-61​ 使用TRUNCATE函数求5.678保留1位小数的结果,SQL语句如下所示。

mysql> SELECT TRUNCATE(5.678,1);

+-------------------+

| TRUNCATE(5.678,1) |

+-------------------+

| 5.6 |

+-------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,5.678保留1位小数的结果为5.6。

7.3​ 日期时间函数

日期时间函数是MySQL中常用的一类函数,主要用于处理日期、时间等,接下来将详细讲解日期时间函数的相关内容。

7.3.1​ CURDATECURRENT_DATE

CURDATE或CURRENT_DATE函数用于返回当前日期,CURDATE或CURRENT_DATE函数的语法格式如下所示。

SELECT CURDATE|CURRENT_DATE();

以上语法格式中,CURDATE或CURRENT_DATE函数会返回当前日期,接下来通过具体案例演示CURDATE和CURRENT_DATE函数的使用。

例7-62​ 使用CURDATE函数查询当前日期,SQL语句如下所示。

mysql> SELECT CURDATE();

+------------+

| CURDATE() |

+------------+

| 2017-10-11 |

+------------+

1 row in set (0.02 sec)

从以上执行结果可看出,CURDATE函数查询到了当前日期。

例7-63​ 使用CURRENT_DATE函数查询当前日期,SQL语句如下所示。

mysql> SELECT CURRENT_DATE();

+----------------+

| CURRENT_DATE() |

+----------------+

| 2017-10-11 |

+----------------+

1 row in set (0.00 sec)

从以上执行结果可看出,CURRENT_DATE函数查询到了当前日期。

7.3.2​ CURTIMECURRENT_TIME

CURTIME或CURRENT_TIME函数用于返回当前时间,CURTIME或CURRENT_TIME函数的语法格式如下所示。

SELECT CURTIME|CURRENT_TIME();

以上语法格式中,CURTIME或CURRENT_TIME函数会返回当前日期,接下来通过具体案例演示CURTIME和CURRENT_TIME函数的使用。

例7-64​ 使用CURTIME函数查询当前时间,SQL语句如下所示。

mysql> SELECT CURTIME();

+-----------+

| CURTIME() |

+-----------+

| 14:56:06 |

+-----------+

1 row in set (0.01 sec)

从以上执行结果可看出,CURTIME函数查询到了当前时间。

例7-65​ 使用CURRENT_TIME函数查询当前时间,SQL语句如下所示。

mysql> SELECT CURRENT_TIME();

+----------------+

| CURRENT_TIME() |

+----------------+

| 14:59:40 |

+----------------+

1 row in set (0.00 sec)

从以上执行结果可看出,CURRENT_TIME函数查询到了当前时间。

7.3.3​ DATE_ADD

DATE_ADD函数用于返回指定日期时间加上指定日期时间结果,DATE_ADD函数的语法格式如下所示

SELECT DATE_ADD(date,INTERVAL int DAY|MONTH|YEAR);

以上语法格式中,DATE_ADD函数会返回日期date加上间隔时间int的结果,接下来通过具体案例演示DATE_ADD函数的使用。

例7-66​ 使用DATE_ADD函数查询2017年1月1日加上5个月的日期,SQL语句如下所示。

mysql> SELECT DATE_ADD('2017-01-01',INTERVAL 5 MONTH);

+-----------------------------------------+

| DATE_ADD('2017-01-01',INTERVAL 5 MONTH) |

+-----------------------------------------+

| 2017-06-01 |

+-----------------------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,2017年1月1日加上5个月的日期查询正确并返回。

例7-67​ 使用DATE_ADD函数查询2017年1月1日加上3年的日期,SQL语句如下所示。

mysql> SELECT DATE_ADD('2017-01-01',INTERVAL 3 YEAR);

+----------------------------------------+

| DATE_ADD('2017-01-01',INTERVAL 3 YEAR) |

+----------------------------------------+

| 2020-01-01 |

+----------------------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,2017年1月1日加上3年的日期查询正确并返回。

7.3.4​ DATE_SUB

DATE_SUB函数用于返回指定日期时间减去指定日期时间的结果,DATE_SUB函数的语法格式如下所示。

SELECT DATE_SUB(date,INTERVAL int DAY|MONTH|YEAR);

以上语法格式中,DATE_SUB函数会返回日期date减去间隔时间int的结果,接下来通过具体案例演示DATE_SUB函数的使用。

例7-68​ 使用DATE_SUB函数查询2017年1月1日减去31天的日期,SQL语句如下所示。

mysql> SELECT DATE_SUB('2017-01-01',INTERVAL 31 DAY);

+----------------------------------------+

| DATE_SUB('2017-01-01',INTERVAL 31 DAY) |

+----------------------------------------+

| 2016-12-01 |

+----------------------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,2017年1月1日减去31天的日期查询正确并返回。

例7-69​ 使用DATE_SUB函数查询2017年1月1日减去1年的日期,SQL语句如下所示。

mysql> SELECT DATE_SUB('2017-01-01',INTERVAL 1 YEAR);

+----------------------------------------+

| DATE_SUB('2017-01-01',INTERVAL 1 YEAR) |

+----------------------------------------+

| 2016-01-01 |

+----------------------------------------+

1 row in set (0.02 sec)

从以上执行结果可看出,2017年1月1日减去1年的日期查询正确并返回。

7.3.5​ DAYOFWEEK

DAYOFWEEK函数用于返回指定日期时间是一周中的第几天,DAYOFWEEK函数的语法格式如下所示。

SELECT DAYOFWEEK(date);

以上语法格式中,DAYOFWEEK函数会返回date是一周中的第几天,返回范围为1~7,接下来通过具体案例演示DAYOFWEEK函数的使用。

例7-70​ 使用DAYOFWEEK函数查询2017年5月1日是一周中的第几天,SQL语句如下所示。

mysql> SELECT DAYOFWEEK('2017-05-01');

+-------------------------+

| DAYOFWEEK('2017-05-01') |

+-------------------------+

| 2 |

+-------------------------+

1 row in set (0.01 sec)

从以上执行结果可看出,2017年5月1日是一周中的第2天。

7.3.6​ DAYOFMONTH

DAYOFMONTH函数用于返回指定日期时间是一个月中的第几天,DAYOFMONTH函数的语法格式如下所示。

SELECT DAYOFMONTH(date);

以上语法格式中,DAYOFMONTH函数会返回date是一个月中的第几天,返回范围为1~31,接下来通过具体案例演示DAYOFMONTH函数的使用。

例7-71​ 使用DAYOFMONTH函数查询2017年8月25日是一个月中的第几天,SQL语句如下所示。

mysql> SELECT DAYOFMONTH('2017-08-25');

+--------------------------+

| DAYOFMONTH('2017-08-25') |

+--------------------------+

| 25 |

+--------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,2017年8月25日是一个月中的第25天。

7.3.7​ DAYOFYEAR

DAYOFYEAR函数用于返回指定日期时间是一年中的第几天,DAYOFYEAR函数的语法格式如下所示。

SELECT DAYOFYEAR(date);

以上语法格式中,DAYOFYEAR函数会返回date是一年中的第几天,返回范围为1~366,接下来通过具体案例演示DAYOFYEAR函数的使用。

例7-72​ 使用DAYOFYEAR函数查询2017年9月5日是一年中的第几天,SQL语句如下所示。

mysql> SELECT DAYOFYEAR('2017-09-05');

+-------------------------+

| DAYOFYEAR('2017-09-05') |

+-------------------------+

| 248 |

+-------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,2017年5月1日是一年中第248天。

7.3.8​ DAYNAME

DAYNAME函数用于返回指定日期时间的星期名,DAYNAME函数的语法格式如下所示。

SELECT DAYNAME(date);

以上语法格式中,DAYNAME函数会返回date的星期名,默认为英文形式,接下来通过具体案例演示DAYNAME函数的使用。

例7-73​ 使用DAYNAME函数查询2015年6月6日是星期几,SQL语句如下所示。

mysql> SELECT DAYNAME('2015-06-06');

+-----------------------+

| DAYNAME('2015-06-06') |

+-----------------------+

| Saturday |

+-----------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,2015年6月6日是星期六。

7.3.9​ MONTHNAME

MONTHNAME函数用于返回指定日期时间月份,MONTHNAME函数的语法格式如所示

SELECT MONTHNAME(date);

以上语法格式中,MONTHNAME函数会返回date的月份,默认为英文形式,接下来通过具体案例演示MONTHNAME函数的使用。

例7-74​ 使用MONTHNAME函数查询2016年10月10日的月份,SQL语句如下所示。

mysql> SELECT MONTHNAME('2016-10-10');

+-------------------------+

| MONTHNAME('2016-10-10') |

+-------------------------+

| October |

+-------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,2016年10月10日是十月。

7.3.10​ SECOND

SECOND函数用于返回指定时间的秒数,SECOND函数的语法格式如下所示。

SELECT SECOND(time);

以上语法格式中,SECOND函数会返回time的秒数,返回范围为0~59,接下来通过具体案例演示SECOND函数的使用。

例7-75​ 使用SECOND函数查询14:23:46的秒数,SQL语句如下所示。

mysql> SELECT SECOND('14:23:46');

+--------------------+

| SECOND('14:23:46') |

+--------------------+

| 46 |

+--------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,14:23:46的秒数为46。

7.3.11​ MINUTE

MINUTE函数用于返回指定时间的分钟值,MINUTE函数的语法格式如下所示。

SELECT MINUTE(time);

以上语法格式中,MINUTE函数会返回time的分钟值,返回范围为0~59,接下来通过具体案例演示MINUTE函数的使用。

例7-76​ 使用MINUTE函数查询11:09:23的分钟值,SQL语句如下所示。

mysql> SELECT MINUTE('11:09:23');

+--------------------+

| MINUTE('11:09:23') |

+--------------------+

| 9 |

+--------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,11:09:23的分钟值为9。

7.3.12​ HOUR

HOUR函数用于返回指定时间的小时值,HOUR函数的语法格式如下所示。

SELECT HOUR(time);

以上语法格式中,HOUR函数会返回time的小时值,返回范围为0~23,接下来通过具体案例演示HOUR函数的使用。

例7-77​ 使用HOUR函数查询10:05:03的小时值,SQL语句如下所示。

mysql> SELECT HOUR('10:05:03');

+------------------+

| HOUR('10:05:03') |

+------------------+

| 10 |

+------------------+

1 row in set (0.04 sec)

从以上执行结果可看出,10:05:03的小时值为10。

7.3.13​ DAY

DAY函数用于返回指定日期时间是当月的第几天,DAY函数的语法格式如下所示。

SELECT DAY(date);

以上语法格式中,DAY函数会返回date是当月的第几天,返回范围为1~31,接下来通过具体案例演示DAY函数的使用。

例7-78​ 使用DAY函数查询2017年10月25日是当月的第几天,SQL语句如下所示。

mysql> SELECT DAY('2017-10-25');

+-------------------+

| DAY('2017-10-25') |

+-------------------+

| 25 |

+-------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,2017年10月25日是当月的第25天。

7.3.14​ WEEK

WEEK函数用于返回指定日期时间是当年的第几周,WEEK函数的语法格式如下所示。

SELECT WEEK(date);

以上语法格式中,WEEK函数会返回date是当年的第几周,返回范围为1~53,接下来通过具体案例演示WEEK函数的使用。

例7-79​ 使用WEEK函数查询2017年10月25日是当年的第几周,SQL语句如下所示。

mysql> SELECT WEEK('2017-10-25');

+--------------------+

| WEEK('2017-10-25') |

+--------------------+

| 43 |

+--------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,2017年10月25日是当年的第43周。

7.3.15​ MONTH

MONTH函数用于返回指定日期时间的月数,MONTH函数的语法格式如下所示。

SELECT MONTH(date);

以上语法格式中,MONTH函数会返回date的月数,返回范围为1~12,接下来通过具体案例演示MONTH函数的使用。

例7-80​ 使用MONTH函数查询2017年10月25日的月数,SQL语句如下所示。

mysql> SELECT MONTH('2017-10-25');

+---------------------+

| MONTH('2017-10-25') |

+---------------------+

| 10 |

+---------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,2017年10月25日的月数为10。

7.3.16​ YEAR

YEAR函数用于返回指定日期时间的年数,YEAR函数的语法格式如下所示。

SELECT YEAR(date);

以上语法格式中,YEAR函数会返回date的年数,接下来通过具体案例演示YEAR函数的使用。

例7-81​ 使用YEAR函数查询2017年10月25日的年数,SQL语句如下所示。

mysql> SELECT YEAR('2017-10-25');

+--------------------+

| YEAR('2017-10-25') |

+--------------------+

| 2017 |

+--------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,2017年10月25日的年数为2017。

7.3.17​ NOW

NOW函数用于返回系统当前时间,NOW函数的语法格式如下所示。

SELECT NOW();

以上语法格式中,NOW函数会返回系统当前时间,接下来通过具体案例演示NOW函数的使用。

例7-82​ 使用NOW函数查询系统当前时间,SQL语句如下所示。

mysql> SELECT NOW();

+---------------------+

| NOW() |

+---------------------+

| 2017-10-12 11:09:33 |

+---------------------+

1 row in set (0.02 sec)

从以上执行结果可看出,NOW函数成功查询系统当前时间并返回。

7.4​ 格式化函数

格式化函数是MySQL中比较常用的一类函数,主要用于对数字或日期时间的格式化,接下来将详细讲解格式化函数的相关内容。

7.4.1​ FORMAT

FORMAT函数用于将指定数字保留小数点后指定位数,四舍五入并返回,FORMAT函数的语法格式如下所示。

SELECT FORMAT(x,n);

以上语法格式中,FORMAT函数会将数字x保留小数点后n位,四舍五入并返回,接下来通过具体案例演示FORMAT函数的使用。

例7-83​ 使用FORMAT函数将235.3456进行格式化,保留小数点后两位并四舍五入,SQL语句如下所示。

mysql> SELECT FORMAT(235.3456,2);

+--------------------+

| FORMAT(235.3456,2) |

+--------------------+

| 235.35 |

+--------------------+

1 row in set (0.01 sec)

从以上执行结果可看出,FORMAT函数对235.3456进行了格式化,保留小数点后两位并四舍五入。

7.4.2​ DATE_FORMAT

DATE_FORMAT函数用于将日期时间按照指定格式进行格式化,DATE_FORMAT函数的语法格式如下所示。

SELECT DATE_FORMAT(date,format);

以上语法格式中,DATE_FORMAT函数会日期时间date按照format的格式进行格式化,接下来通过具体案例演示DATE_FORMAT函数的使用。

例7-84​ 使用DATE_FORMAT函数将20170101格式化,按照2017-01-01的格式显示,SQL语句如下所示。

mysql> SELECT DATE_FORMAT(20170101,'%Y-%m-%d');

+----------------------------------+

| DATE_FORMAT(20170101,'%Y-%m-%d') |

+----------------------------------+

| 2017-01-01 |

+----------------------------------+

1 row in set (0.00 sec)

从以上执行结果可看出,DATE_FORMAT函数对日期成功格式化,其中%Y代表4位数的年,%m代表月,%d代表日。

7.5​ 系统信息函数

系统信息函数是MySQL中比较常用的一类函数,主要用于查询当前数据库的信息,接下来将详细讲解系统信息函数的相关内容。

7.5.1​ DATABASE

DATEBASE函数用于返回当前数据库名,DATEBASE函数的语法格式如下所示

SELECT DATEBASE();

以上语法格式中,DATEBASE函数会返回当前数据库名,如果还未选择数据库,则返回NULL,接下来通过具体案例演示DATEBASE函数的使用。

例7-85​ 使用DATEBASE函数查询当前数据库名,SQL语句如下所示。

mysql> SELECT DATABASE();

+------------+

| DATABASE() |

+------------+

| qianfeng6 |

+------------+

1 row in set (0.00 sec)

从以上执行结果可看出,DATABASE函数成功返回当前数据库名。

7.5.2​ CONNECTION_ID

CONNECTION_ID函数用于返回当前用户的连接ID,CONNECTION_ID函数的语法格式如下所示。

SELECT CONNECTION_ID();

以上语法格式中,CONNECTION_ID函数会返回当前用户的连接ID,接下来通过具体案例演示CONNECTION_ID函数的使用。

例7-86​ 使用CONNECTION_ID函数查询当前用户的连接ID,SQL语句如下所示。

mysql> SELECT CONNECTION_ID();

+-----------------+

| CONNECTION_ID() |

+-----------------+

| 2 |

+-----------------+

1 row in set (0.00 sec)

从以上执行结果可看出,当前用户的连接ID为2。

7.5.3​ USER或SYSTEM_USER

USER或SYSTEM_USER函数用于返回当前登录用户名,USER和SYSTEM_USER函数的语法格式如下所示。

SELECT USER|SYSTEM_USER();

以上语法格式中,USER或SYSTEM_USER函数会返回当前数据库名,接下来通过具体案例演示USER和SYSTEM_USER函数的使用。

例7-87​ 使用USER函数查询当前登录用户名,SQL语句如下所示。

mysql> SELECT USER();

+----------------+

| USER() |

+----------------+

| root@localhost |

+----------------+

1 row in set (0.02 sec)

从以上执行结果可看出,USER函数查询出当前登录用户名并返回。

例7-88​ 使用SYSTEM_USER函数查询当前登录用户名,SQL语句如下所示。

mysql> SELECT SYSTEM_USER();

+----------------+

| SYSTEM_USER() |

+----------------+

| root@localhost |

+----------------+

1 row in set (0.00 sec)

从以上执行结果可看出,SYSTEM_USER函数查询出当前登录用户名并返回。

7.5.4​ VERSION

VERSION函数用于返回当前数据库的版本,VERSION函数的语法格式如下所示。

SELECT VERSION();

以上语法格式中,VERSION函数会返回当前数据库的版本,接下来通过具体案例演示VERSION函数的使用。

例7-89​ 使用VERSION函数查询当前数据库的版本,SQL语句如下所示。

mysql> SELECT VERSION();

+-----------+

| VERSION() |

+-----------+

| 5.5.15 |

+-----------+

1 row in set (0.00 sec)

从以上执行结果可看出,VERSION函数查询出当前数据库版本并返回结果。

7.6​ 本章小结

本章首先介绍字符串函数,这是最常用的,然后介绍了数学函数日期时间函数格式化函数和系统信息函数这些函数非常多,不需要死记硬背,需要大家通过练习去掌握

7.7​ 习题

1.思考题

(1) 请简述LCASE和UCASE的区别。

(2) 请简述LTRIM、RTRIM和TRIM的区别。

(3) 请简述常用的数学函数有哪些。

(4) 请简述查询系统当前日期时间的函数是哪个。

(5) 请简述常用的格式化函数有哪些。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。