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

[复制链接]
发表于 2025-10-2 15:54:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
目次

1.数值函数
2. 字符串函数



1.数值函数

   ABS:绝对值  ;  SIGN:数字正负,正返回1,负返回-1 , 0返回0  ;  CEIL,CEILING:取数上面的数 ;FLOOR:取数下面的数 ; MOD:取余
  1. #基本的操作
  2. SELECT ABS(-123),ABS(32),SIGN(-23),SIGN(43),PI(),CEIL(32.32),CEILING(-43.23),FLOOR(32.32),
  3. FLOOR(-43.23),MOD(12,5),12 MOD 5,12 % 5
  4. FROM DUAL;
复制代码
  RAND:随机数,反面加括号取类似随机数
  1. #取随机数
  2. SELECT RAND(),RAND(),RAND(10),RAND(10),RAND(-1),RAND(-1)
  3. FROM DUAL;
复制代码
  ROUND:四舍五入 ; TRUNCATE:截断使用(无视四舍五入)
  1. #四舍五入,截断操作
  2. SELECT ROUND(123.556),ROUND(123.456,0),ROUND(123.456,1),ROUND(123.456,2),
  3. ROUND(123.456,-1),ROUND(153.456,-2)
  4. FROM DUAL;
  5. SELECT TRUNCATE(123.456,0),TRUNCATE(123.496,1),TRUNCATE(129.45,-1)
  6. FROM DUAL;
复制代码
  单行函数可以嵌套
  1. SELECT TRUNCATE(ROUND(123.456,2),0)
  2. FROM DUAL;
复制代码
  RADIANS:弧度的转换  ; DEGREES:角度的转换
  1. SELECT RADIANS(30),RADIANS(45),RADIANS(60),RADIANS(90),
  2. DEGREES(2*PI()),DEGREES(RADIANS(60))
  3. FROM DUAL;
复制代码
  SIN/ASIN/COS/ACOS/TAN/ATAN/COT:三角函数(必须用弧度制,可以嵌套)
  1. SELECT SIN(RADIANS(30)),DEGREES(ASIN(1)),TAN(RADIANS(45)),DEGREES(ATAN(1))
  2. FROM DUAL;
复制代码
  POW/POWER指数 ; EXP:指数次方
  1. SELECT POW(2,5),POWER(2,4),EXP(2)
  2. FROM DUAL;
复制代码
  LN:以e为底 ; LOG:以10为底
  1. SELECT LN(EXP(2)),LOG(EXP(2)),LOG10(10),LOG2(4)
  2. FROM DUAL;
复制代码
  进制间的转换:BIN:转二进制 ; HEX:十进制 ; OCT:八进制 ; CONV:返回第二位进制数变成第三位进制数
  1. SELECT BIN(10),HEX(10),OCT(10),CONV(10,10,8)
  2. FROM DUAL;
复制代码

2. 字符串函数


   ASCII(S):返回字符串S中的第一个字符的ASCII码值
  CHAR_LENGTH(S):返回字符串s的字符数,作用与CHARACTER_LENGTH(s)类似
  LENGTH(s) :返回字符串s的字节数,和字符集有关
  1. SELECT ASCII('Abcdfsf'),CHAR_LENGTH('hello'),CHAR_LENGTH('我们'),
  2. LENGTH('hello'),LENGTH('我们')
  3. FROM DUAL;
复制代码
  CONCAT(s1,s2,……, sn)  毗连s1,s2,……, sn为一个字符串
CONCAT_WS(x,s1,s2,……, sn)  同CONCAT(s1,s2,…)函数, 但是每个字符串之间要加上x
  1. # xxx worked for yyy
  2. SELECT CONCAT(emp.last_name,' worked for ',mgr.last_name) "details"
  3. FROM employees emp JOIN employees mgr
  4. WHERE emp.`manager_id` = mgr.employee_id;
  5. SELECT CONCAT_WS('-','hello','world','hello','beijing')
  6. FROM DUAL;
复制代码
  INSERT(str, idx, len,replacestr)  将字符串 str从第 idx位置开始, len个字符长的子串更换为字符串 replacestr
REPLACE(str,a,b)  用字符串b更换字符串 str中全部出现的字符串a
UPPER(s)或UCASE(s)  将字符串s的全部字母转成大写字母
  1. #字符串的索引是从1开始的!
  2. SELECT INSERT('helloworld',2,3,'aaaaa'),REPLACE('hello','lol','mmm')
  3. FROM DUAL;
  4. SELECT UPPER('HelLo'),LOWER('HelLo')
  5. FROM DUAL;
复制代码
  LOWER(s) 或LCASE(s)  将字符串s的全部字母转成小写字母
  1. SELECT last_name,salary
  2. FROM employees
  3. WHERE LOWER(last_name) = 'King';
复制代码
  LEFT(str,n)  返回字符串 str最左边的n个字符
RIGHT(str,n)  返回字符串 str最右边的n个字符
  1. SELECT LEFT('hello',2),RIGHT('hello',3),RIGHT('hello',13)
  2. FROM DUAL;
复制代码
  LPAD(str, len, pad)  用字符串 pad对 str最左边举行添补,直到 str的长度为 len个字符
RPAD(str, len, pad)  用字符串 pad对 str最右边举行添补,直到 str的长度为 len个字符
  1. # LPAD:实现右对齐效果
  2. # RPAD:实现左对齐效果
  3. SELECT employee_id,last_name,LPAD(salary,10,' ')
  4. 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
  1. SELECT CONCAT('---',LTRIM('    h  el  lo   '),'***'),
  2. TRIM('oo' FROM 'ooheollo')
  3. FROM DUAL;
复制代码
  REPEAT(str,n)  返回 str重复n次的效果
SPACE(n)  返回n个空格
STRCMP(s1,s2)  比力字符串s1,s2的ASCII码值的巨细
  1. SELECT REPEAT('hello',4),LENGTH(SPACE(5)),STRCMP('abc','abe')
  2. 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
  1. SELECT SUBSTR('hello',2,2),LOCATE('lll','hello')
  2. 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是一个以逗号分隔的字符串
  1. SELECT ELT(2,'a','b','c','d'),FIELD('mm','gg','jj','mm','dd','mm'),
  2. FIND_IN_SET('mm','gg,mm,jj,dd,mm,gg')
  3. FROM DUAL;
  4. SELECT employee_id,NULLIF(LENGTH(first_name),LENGTH(last_name)) "compare"
  5. FROM employees;
复制代码

 


回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表