RDBMS之常用函数
第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
LCASE或LOWER函数用于将字符串中所有字母转换为小写,并返回结果,LCASE和LOWER函数的语法格式如下所示。
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 CURDATE或CURRENT_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 CURTIME或CURRENT_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) 请简述常用的格式化函数有哪些。
- 点赞
- 收藏
- 关注作者
评论(0)