一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第23天,点击查看活动详情。
前言
上篇我们学习了一部分MySQL中的函数。有兴趣的小伙伴可以阅读(# MySQL学习-函数(二))。
下面继续学习MySQL中的函数。
数值函数
指数和对数
| 函数 | 用法 |
|---|---|
| POW(x, y), POWER(x, y) | 返回x的y次方 |
| EXP(x) | 返回e的x次方, 其中e是一个常数,2.718281828459045 |
| LN(x), LOG(x) | 返回以e为底的x的对数,当x<=0时, 返回的结果为NULL |
| LOG10(x) | 返回以10为底的x的对数,当x<=0时, 返回的结果为NULL |
| LOG2(x) | 回以2为底的x的对数,当x<=0时, 返回的结果为NULL |
示例一
SELECT POW(2, 5), POWER(2, 4), EXP(2)
FROM DUAL
| POW(2, 5) | POWER(2, 4) | EXP(2) |
|---|---|---|
| 32 | 16 | 7.38905609893065 |
示例很简单,结果都是我们学过的公式计算得出的结果。
示例二
SELECT LN(EXP(2)), LOG(EXP(2)), LOG10(10), LOG2(4)
FROM DUAL
| LN(EXP(2)) | LOG(EXP(2)) | LOG10(10) | LOG2(4) |
|---|---|---|---|
| 2 | 2 | 1 | 2 |
上面的示例结果也可以通过我们所学公式计算得到。
进制转换
| 函数 | 用法 |
|---|---|
| BIN(x) | 返回x的二进制编码 |
| HEX(x) | 返回x的十六进制编码 |
| OCT(x) | 返回x的八进制编码 |
| CONV(x, f1, f2) | 返回f1进制数变成f2进制数 |
示例三
SELECT BIN(10), HEX(10), OCT(10), CONV(10, 10, 8)
FROM DUAL
| BIN(10) | HEX(10) | OCT(10) | CONV(10, 10, 8) |
|---|---|---|---|
| 1010 | A | 12 | 12 |
CONV将十进制的10转换成八进制,结果和OCT(10)的一样,都是12。
字符串函数
| 函数 | 用法 |
|---|---|
| ASCII(x) | 返回字符串S中的第一个字符的ASCII码值 |
| CHAR_LENGTH(s) | 返回字符串s的字符数。作用与CHARACTER_LENGTH(s)相同 |
| LENGTH(s) | 返回字符串s的字节数,和字符集有关 |
| CONCAT(s1,s2,…,sn) | 连接s1,s2,…,sn为一个字符串 |
| CONCAT_WS(x, s1,s2,…,sn) | 同CONCAT(s1,s2,…)函数,但是每个字符串之间要加上x |
| INSERT(str, idx, len, replacestr) | 将字符串str从第idx位置开始,len个字符长的子串替换为字符串replacestr |
| REPLACE(str, a, b) | 用字符串b替换字符串str中所有出现的字符串a |
| UPPER(s) 或 UCASE(s) | 将字符串s的所有字母转成大写字母 |
| LOWER(s) 或LCASE(s) | 将字符串s的所有字母转成小写字母 |
| LEFT(str,n) | 返回字符串str最左边的n个字符 |
| RIGHT(str,n) | 返回字符串str最右边的n个字符 |
| LPAD(str, len, pad) | 用字符串pad对str最左边进行填充,直到str的长度为len个字符 |
| RPAD(str ,len, pad) | 用字符串pad对str最右边进行填充,直到str的长度为len个字符 |
| LTRIM(s) | 去掉字符串s左侧的空格 |
| RTRIM(s) | 去掉字符串s右侧的空格 |
| TRIM(s) | 去掉字符串s开始与结尾的空格 |
| TRIM(s1 FROM s) | 去掉字符串s开始与结尾的s1 |
| TRIM(LEADING s1 FROM s) | 去掉字符串s开始处的s1 |
| TRIM(TRAILING s1 FROM s) | 去掉字符串s结尾处的s1 |
| REPEAT(str, n) | 返回str重复n次的结果 |
| SPACE(n) | 返回n个空格 |
| STRCMP(s1,s2) | 比较字符串s1,s2的ASCII码值的大小 |
| SUBSTR(s,index,len) | 返回从字符串s的index位置其len个字符,作用与SUBSTRING(s,n,len)、MID(s,n,len)相同 |
| LOCATE(substr,str) | 返回字符串substr在字符串str中首次出现的位置,作用于POSITION(substr IN str)、INSTR(str,substr)相同。未找到,返回0 |
| ELT(m,s1,s2,…,sn) | 返回指定位置的字符串,如果m=1,则返回s1,如果m=2,则返回s2,如果m=n,则返回sn |
| FIELD(s,s1,s2,…,sn) | 返回字符串s在字符串列表中第一次出现的位置 |
| FIND_IN_SET(s1,s2) | 返回字符串s1在字符串s2中出现的位置。其中,字符串s2是一个以逗号分隔的字符串 |
| REVERSE(s) | 返回s反转后的字符串 |
| NULLIF(value1,value2) | 比较两个字符串,如果value1与value2相等,则返回NULL,否则返回value1 |
今天先熟悉一下字符串函数的定义,明天分别举例深入学习。