---------------------------------------字符串函数--------------------------------------
concat函数:
连接字符串的函数,
select concat(deptid,‘ ’,if(sex,'男生','女生'),' ',stuname) from student;
这个语句就只返回一个连接过后了的字符串。
LEFT(str,len) :
返回字符串str的最左面len个字符。
mysql> select LEFT('foobarbar', 5);
-> 'fooba'
该函数是多字节可靠的。
right与left相反。
SUBSTRING(str FROM pos FOR len) :
取出子字符串
select substring('qwertyu',2,3);
ltrim(' asdf'):
rtrim(' asdf'):
trim(' asdf'):包含了ltrim和rtrim。
SPACE(N) :
返回由N个空格字符组成的一个字符串。
REPEAT(str,count) :
返回由重复countTimes次的字符串str组成的一个字符串。如果count <= 0,返回一个空字符串。如果str或count是NULL,返回NULL。
这个功能与python中的*功能很类似。
REVERSE(str) :
返回颠倒字符顺序的字符串str。
------------------------------------------时间函数-------------------------------
now()函数。
CURDATE()函数。
sysdate()函数。
UNIX_TIMESTAMP(date)
如果没有参数调用,返回一个Unix时间戳记(从'1970-01-01 00:00:00'GMT开始的秒数)。如果UNIX_TIMESTAMP()用一个date参数被调用,它返回从'1970-01-01 00:00:00' GMT开始的秒数值。date可以是一个DATE字符串、一个DATETIME字符串、一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地时间的一个数字。
mysql> select UNIX_TIMESTAMP();
-> 882226357
mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00');
-> 875996580
当UNIX_TIMESTAMP被用于一个TIMESTAMP列,函数将直接接受值,没有隐含的“string-to-unix-timestamp”变换。
Select curtime();取出当前时间,不带日期,结果如下:
mysql> Select curtime();
+-----------+
| curtime() |
+-----------+
| 21:45:49 |
+-----------+
1 row in set (0.00 sec)
-------------------------------控制流程函数----------------------------------------------
if(expr1,expr2,expr3):如果expr1,成立,则执行expr2,否则执行expr3。
mysql> select * from user;
+----+-------+--------+
| id | name | extra |
+----+-------+--------+
| 1 | user1 | user1 |
| 4 | user4 | user4 |
| 5 | user5 | user5 |
| 6 | user3 | user6 |
| 9 | user2 | user9 |
| 10 | user6 | user10 |
| 11 | tt | dd |
| 12 | ttd | dd |
+----+-------+--------+
8 rows in set (0.00 sec)
mysql> select id,if(name like '%user%','aa','bb') from user;
+----+----------------------------------+
| id | if(name like '%user%','aa','bb') |
+----+----------------------------------+
| 11 | bb |
| 12 | bb |
| 1 | aa |
| 9 | aa |
| 6 | aa |
| 4 | aa |
| 5 | aa |
| 10 | aa |
+----+----------------------------------+
8 rows in set (0.00 sec)
CASE WHEN THEN 函数
语法: CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ……] [ELSE result ] END CASE WHEN [condition] THEN result [WHEN[condition] THEN result ……] [ELSE result] END ;
函数用法说明:在第一个方案的返回结果中, value =compare-value 。而第二个方案的返回结果是第一种情况的真实结果。如果没有匹配的结果值,则返回结果为 ELSE 后的结果,如果没有 ELSE 部分,则返回值为 NULL
这里有一个例子很好的说明了case when then end的用法。
IFNULL 函数
语法: IFNULL(expr1,expr2)
函数用法说明:假如 expr1 不为 NULL ,则 IFNULL() 的返回值为 expr1 ; 否则其返回值为 expr2 。 IFNULL() 的返回值是数字或是字符串,具体情况取决于其所使用的语境。
先看一下表中的数据:
mysql> select * from f where name is NULL;
+------+------+
| id | name |
+------+------+
| 111 | NULL |
+------+------+
1 row in set (0.00 sec)
查询函数如下:
mysql> select ifnull(NULL,'2');
+------------------+
| ifnull(NULL,'2') |
+------------------+
| 2 |
+------------------+
1 row in set (0.00 sec)
-----------------------------字符串比较函数-----------------------------------------
bin (N):将一个数字转换成二进制形式。假如 N 为 NULL ,则返回值为 NULL
mysql> select ascii('b');:求一个字符串最左侧字符的数字表示。
+------------+
| ascii('b') |
+------------+
| 98 |
+------------+
1 row in set (0.00 sec)
mysql> select CHAR_LENGTH('abc'):求一个字符串的长度
-> ;
+--------------------+
| CHAR_LENGTH('abc') |
+--------------------+
| 3 |
+--------------------+
1 row in set (0.00 sec)
CHARACTER_LENGTH(str )是上一个的同义词。
mysql> select char("97",'98','99');将数字变成字符。
+----------------------+
| char("97",'98','99') |
+----------------------+
| abc |
+----------------------+
1 row in set (0.00 sec)
CONCAT_WS(separator ,str1 ,str2 ,...)
函数使用说明: CONCAT_WS() 代表 CONCAT With Separator ,是 CONCAT() 的特殊形式。 第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL ,则结果为 NULL 。函数会忽略任何分隔符参数后的 NULL 值。
mysql> select concat_ws('@','bac','123');
+----------------------------+
| concat_ws('@','bac','123') |
+----------------------------+
| bac@123 |
+----------------------------+
1 row in set (0.00 sec)
函数 ELT(N ,str1 ,str2 ,str3 ,...)
函数使用说明:若 N = 1 ,则返回值为 str1 ,若 N = 2 ,则返回值为 str2 ,以此
类推。 若 N 小于 1 或大于参数的数目,则返回值为 NULL 。 ELT() 是 FIELD() 的补数
mysql> select elt(3,'a','b','c');
+--------------------+
| elt(3,'a','b','c') |
+--------------------+
| c |
+--------------------+
1 row in set (0.00 sec)
函数CONV(N from_base, to_base)
函数使用说明:不同数基间转换数字。返回值为数字的 N 字符串表示,由 from_base 基转化为 to_base 基。如有任意一个参数为 NULL ,则返回值为 NULL 。自变量 N 被理解为一个整数,但是可以被指定为一个整数或字符串。最小基数为 2 ,而最大基数则为 36 。 If to_base 是一个负数,则 N 被看作一个带符号数。否则, N 被看作无符号数。 CONV() 的运行精确度为 64 比特。
mysql> select conv(11,10,2);
+---------------+
| conv(11,10,2) |
+---------------+
| 1011 |
+---------------+
1 row in set (0.01 sec)
-----------------------------------------------------------------------------
count():
这个不说了。
-----------------------------------------聚合函数---------------------------------------
min、max、sum、count
-----------------------------------
user函数返回当前 MySQL 用户名和机主名。调用方法select user(0;
----------------------------------------
version函数返回指示 MySQL 服务器版本的字符串。这个字符串使用 utf8 字符集。调用方法select version();
follow me @佐小白