文章目录
- 数值函数
-
- 字符串函数
- ASCII(str)
- CHAR_LENGTH()
- LENGTH()
- UPPER(str)
- LOWER(str)
- CONCAT(str1,str2,...)
- CONCAT_WS(separator,str1,str2,...)
- REPLACE(str,from_str,to_str)
- SUBSTR()
- LEFT(str,len)
- RIGHT(str,len)
- MID(str,pos,len)
- LTRIM(str)
- RTRIM(str)
- TRIM([remstr FROM] str)
- INSTR(str,substr)
- LPAD(str,len,padstr)
- RPAD(str,len,padstr)
- REPEAT(str,count)
- SPACE(N)
- STRCMP(expr1,expr2)
- LOCATE(substr,str)
- NULLIF(expr1,expr2)
- ELT(N,str1,str2,str3,...)
- FIELD(str,str1,str2,str3,...)
- FIND_IN_SET(str,strlist)
数值函数
ABS(X)
SELECT ABS(-5.36),ABS(98.23),ABS(0);
SIGN(X)
- 返回参数的符号,x 的值为负、零、正和NULL时返回结果依次为 -1、0 和、1和NULL;
SELECT SIGN(-56.25),SIGN(0),SIGN(62),SIGN(NULL);
PI()
SELECT PI();
CEIL(X)/CEILING(X)
SELECT CEIL(56.23),CEILING(-56.69);
FLOOR(X)
SELECT FLOOR(23.56),FLOOR(99.36);
MOD()
SELECT 13 MOD 5,MOD (12, 5),12 % 5;
RAND()
SELECT RAND(),RAND(10),RAND(-1) FROM DUAL;
SELECT (RAND()*5)+5 FROM DUAL;
select lpad(floor(rand() * 1000000), 6, '0');
ROUND()
SELECT ROUND(-23.56),ROUND(-56.36,1),ROUND(1548.965,2) FROM DUAL;
TRUNCATE()
SELECT TRUNCATE(789.412,0),TRUNCATE(785.496,1),TRUNCATE(859.43,-1),TRUNCATE(-859.43,1),TRUNCATE(-859.43,0);
SELECT TRUNCATE(ROUND(123.456,2),0)
其他函数
SELECT SIN(RADIANS(30)),DEGREES(ASIN(1)),TAN(RADIANS(45)),DEGREES(ATAN(1));
SELECT POW(2,5),POWER(2,4),EXP(2);
SELECT LN(EXP(2)),LOG(EXP(2)),LOG10(10),LOG2(4);
SELECT BIN(10),HEX(10),OCT(10),CONV(10,10,8);
字符串函数
ASCII(str)
SELECT ASCII('HELLO');
CHAR_LENGTH()
SELECT CHAR_LENGTH('hello'),CHAR_LENGTH('我们');
LENGTH()
- utf8字符集编码下,一个汉字是算三个字符,一个数字或字母算一个字符。
- 其他编码下,一个汉字算两个字符, 一个数字或字母算一个字符。
SELECT LENGTH('hello'),LENGTH('我们');
UPPER(str)
SELECT UPPER('refine');
LOWER(str)
SELECT LOWER('REFINE')
CONCAT(str1,str2,…)
SELECT CONCAT('hello','world','hi','shanghai');
CONCAT_WS(separator,str1,str2,…)
SELECT CONCAT_WS(' ','hello','world','hi','shanghai');
REPLACE(str,from_str,to_str)
SELECT REPLACE('refine','e','UU');
SUBSTR()
SELECT SUBSTR('refine',2);
SELECT SUBSTR('refine',2,4);
LEFT(str,len)
SELECT LEFT('yupaochangjian',5);
RIGHT(str,len)
SELECT RIGHT('yupaochangjian',9);
MID(str,pos,len)
- 获取字符串中从pos(第几个)位置开始,长度为len的字符串
SELECT MID('yupaochangjian',6,5);
LTRIM(str)
SELECT LTRIM(' yupaochangjian ');
RTRIM(str)
SELECT RTRIM(' yupaochangjian ');
TRIM([remstr FROM] str)
SELECT TRIM(' yupaochangjian ');
INSTR(str,substr)
SELECT INSTR("refine","re"),INSTR("refine","12");
LPAD(str,len,padstr)
SELECT employee_id,last_name,salary,LPAD(salary,12,"-") FROM employees;
RPAD(str,len,padstr)
SELECT employee_id,last_name,salary,RPAD(salary,12,"-") FROM employees;
REPEAT(str,count)
SELECT REPEAT("refine",5);
SPACE(N)
SELECT LENGTH(SPACE(7));
STRCMP(expr1,expr2)
- STRCMP()函数用于比较两个字符串。
- 如果两个字符串相同,则返回0
- 如果根据定义的顺序第一个参数小于第二个参数,则返回-1
- 如果第二个参数小于第一个参数时,返回1
SELECT STRCMP('refine','refinf'),STRCMP('refine','refine'),STRCMP('refine','refind');
LOCATE(substr,str)
- 判断str字符串是否包含substr字符串,如
- Locate(str,sub) > 0,表示sub字符串包含str字符串;
- Locate(str,sub) = 0,表示sub字符串不包含str字符串。
SELECT LOCATE('ef','refine'),LOCATE('rt','refine');
NULLIF(expr1,expr2)
- 如果expr1等于expr2,则返回NULL,否则返回expr1。
SELECT NULLIF("refine","hello"),NULLIF('refine','refine');
ELT(N,str1,str2,str3,…)
- 返回后面的多个字符串中第N个字符串的值
- 当索引的值小于1或者大于后面参数的个数时,函数返回null
SELECT ELT(2,'refine','lily','jim','tom');
FIELD(str,str1,str2,str3,…)
SELECT FIELD('dd','gg','jj','mm','dd','mm');
SELECT
*
FROM
employees
WHERE
last_name IN (
"Kochhar",
"De Haan",
"Pataballa"
)
ORDER BY
FIELD(
last_name,
"Kochhar",
"Pataballa",
"De Haan"
) ASC;
FIND_IN_SET(str,strlist)
- 返回str在strlist中的位置
- 如果str不在strlist 或strlist 为空字符串,则返回值为 0
- 如果任意一个参数为NULL,则返回值为 NULL
SELECT
FIND_IN_SET('gg', 'gg,mm,jj,dd,mm,NULL'),
FIND_IN_SET('tt', 'gg,mm,jj,dd,mm,NULL'),
FIND_IN_SET('NULL', 'gg,mm,jj,dd,mm,NULL'),
FIND_IN_SET(NULL, 'gg,mm,jj,dd,mm,NULL'),
FIND_IN_SET('gg', NULL)