MySQL-- 函数(单行函数):数值函数, 字符串函数

目录

1.数值函数

[2. 字符串函数](#2. 字符串函数)


1.数值函数

ABS:绝对值 ; SIGN:数字正负,正返回1,负返回-1 , 0返回0 ; CEIL,CEILING:取数上面的数 ;FLOOR:取数下面的数 ; MOD:取余

sql 复制代码
#基本的操作
SELECT ABS(-123),ABS(32),SIGN(-23),SIGN(43),PI(),CEIL(32.32),CEILING(-43.23),FLOOR(32.32),
FLOOR(-43.23),MOD(12,5),12 MOD 5,12 % 5
FROM DUAL;

RAND:随机数,后面加括号取相同随机数

sql 复制代码
#取随机数
SELECT RAND(),RAND(),RAND(10),RAND(10),RAND(-1),RAND(-1)
FROM DUAL;

ROUND:四舍五入 ; TRUNCATE:截断操作(无视四舍五入)

sql 复制代码
#四舍五入,截断操作
SELECT ROUND(123.556),ROUND(123.456,0),ROUND(123.456,1),ROUND(123.456,2),
ROUND(123.456,-1),ROUND(153.456,-2)
FROM DUAL;

SELECT TRUNCATE(123.456,0),TRUNCATE(123.496,1),TRUNCATE(129.45,-1)
FROM DUAL;

单行函数可以嵌套

sql 复制代码
SELECT TRUNCATE(ROUND(123.456,2),0)
FROM DUAL;

RADIANS:弧度的转换 ; DEGREES:角度的转换

sql 复制代码
SELECT RADIANS(30),RADIANS(45),RADIANS(60),RADIANS(90),
DEGREES(2*PI()),DEGREES(RADIANS(60))
FROM DUAL;

SIN/ASIN/COS/ACOS/TAN/ATAN/COT:三角函数(必须用弧度制,可以嵌套)

sql 复制代码
SELECT SIN(RADIANS(30)),DEGREES(ASIN(1)),TAN(RADIANS(45)),DEGREES(ATAN(1))
FROM DUAL;

POW/POWER指数 ; EXP:指数次方

sql 复制代码
SELECT POW(2,5),POWER(2,4),EXP(2)
FROM DUAL;

LN:以e为底 ; LOG:以10为底

sql 复制代码
SELECT LN(EXP(2)),LOG(EXP(2)),LOG10(10),LOG2(4)
FROM DUAL;

进制间的转换:BIN:转二进制 ; HEX:十进制 ; OCT:八进制 ; CONV:返回第二位进制数变成第三位进制数

sql 复制代码
SELECT BIN(10),HEX(10),OCT(10),CONV(10,10,8)
FROM DUAL;

2. 字符串函数

ASCII(S):返回字符串S中的第一个字符的ASCII码值

CHAR_LENGTH(S):返回字符串s的字符数,作用与CHARACTER_LENGTH(s)相同

LENGTH(s) :返回字符串s的字节数,和字符集有关

sql 复制代码
SELECT ASCII('Abcdfsf'),CHAR_LENGTH('hello'),CHAR_LENGTH('我们'),
LENGTH('hello'),LENGTH('我们')
FROM DUAL;

CONCAT(s1,s2,......, sn) 连接s1,s2,......, sn为一个字符串

CONCAT_WS(x,s1,s2,......, sn) 同CONCAT(s1,s2,...)函数, 但是每个字符串之间要加上x

sql 复制代码
# xxx worked for yyy
SELECT CONCAT(emp.last_name,' worked for ',mgr.last_name) "details"
FROM employees emp JOIN employees mgr
WHERE emp.`manager_id` = mgr.employee_id;

SELECT CONCAT_WS('-','hello','world','hello','beijing')
FROM DUAL;

INSERT(str, idx, len,replacestr) 将字符串 str从第 idx位置开始, len个字符长的子串替换为字符串 replacestr

REPLACE(str,a,b) 用字符串b替换字符串 str中所有出现的字符串a

UPPER(s)或UCASE(s) 将字符串s的所有字母转成大写字母

sql 复制代码
#字符串的索引是从1开始的!
SELECT INSERT('helloworld',2,3,'aaaaa'),REPLACE('hello','lol','mmm')
FROM DUAL;

SELECT UPPER('HelLo'),LOWER('HelLo')
FROM DUAL;

LOWER(s) 或LCASE(s) 将字符串s的所有字母转成小写字母

sql 复制代码
SELECT last_name,salary
FROM employees
WHERE LOWER(last_name) = 'King';

LEFT(str,n) 返回字符串 str最左边的n个字符

RIGHT(str,n) 返回字符串 str最右边的n个字符

sql 复制代码
SELECT LEFT('hello',2),RIGHT('hello',3),RIGHT('hello',13)
FROM DUAL;

LPAD(str, len, pad) 用字符串 pad对 str最左边进行填充,直到 str的长度为 len个字符

RPAD(str, len, pad) 用字符串 pad对 str最右边进行填充,直到 str的长度为 len个字符

sql 复制代码
# LPAD:实现右对齐效果
# RPAD:实现左对齐效果
SELECT employee_id,last_name,LPAD(salary,10,' ')
FROM employees;

LTRIM(s) 去掉字符串s左侧的空格

RTRIM(s) 去掉字符串s右侧的空格

TRIM(s) 去掉字符串s开始与结尾的空格

TRIM(s1 FROMs) 去掉字符串s开始与结尾的s1

TRIM(LEADING s1FROMs) 去掉字符串s开始处的s1

TRIM(TRAILING s1FROM s) 去掉字符串s结尾处的s1

sql 复制代码
SELECT CONCAT('---',LTRIM('    h  el  lo   '),'***'),
TRIM('oo' FROM 'ooheollo')
FROM DUAL;

REPEAT(str,n) 返回 str重复n次的结果

SPACE(n) 返回n个空格

STRCMP(s1,s2) 比较字符串s1,s2的ASCII码值的大小

sql 复制代码
SELECT REPEAT('hello',4),LENGTH(SPACE(5)),STRCMP('abc','abe')
FROM DUAL;

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

sql 复制代码
SELECT SUBSTR('hello',2,2),LOCATE('lll','hello')
FROM DUAL;

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是一个以逗号分隔的字符串

sql 复制代码
SELECT ELT(2,'a','b','c','d'),FIELD('mm','gg','jj','mm','dd','mm'),
FIND_IN_SET('mm','gg,mm,jj,dd,mm,gg')
FROM DUAL;

SELECT employee_id,NULLIF(LENGTH(first_name),LENGTH(last_name)) "compare"
FROM employees;
相关推荐
PSLoverS5 分钟前
c++如何读取和修改可执行文件的PE头信息_IMAGE_NT_HEADERS解析【进阶】
jvm·数据库·python
阿丰资源10 分钟前
基于SpringBoot的房产销售系统设计与实现(附源码+数据库+文档,一键运行)
数据库·spring boot·后端
gmaajt13 分钟前
React Native 单元测试中第三方依赖的正确 Mock 策略
jvm·数据库·python
a95114164217 分钟前
宝塔面板数据库查询响应慢_利用慢查询日志进行优化
jvm·数据库·python
l1t32 分钟前
DeepSeek总结的面向 PostgreSQL 分析和 HTAP 工作负载的两种高性能表访问方法
数据库·postgresql
九皇叔叔33 分钟前
MySQL 8.x 隔离级别调整
数据库·mysql·事务·隔离级别
许愿OvO36 分钟前
Redis 7.4.8高可用集群实战:主从复制+哨兵+Cluster全解析
数据库·redis·bootstrap
2401_8314194436 分钟前
如何用 http 模块创建一个基础的 Web 服务器处理请求
jvm·数据库·python
pele36 分钟前
Redis如何防止AOF文件无限增大_触发BGREWRITEAOF命令进行日志重写
jvm·数据库·python
qq_4142565736 分钟前
golang如何设计HTTP中间件链_golang HTTP中间件链设计方法
jvm·数据库·python