MySQL中的运算符
算术运算符
SELECT 0.1+0.333,0.1-0.333,0.1*0.333,1/2,1%2;
其中在除法运算和模运算中,除数为0,将是非法数,返回结果为NULLmysql
select 1/0,100%0;
对于模运算,还有另一种表达方式,使用MOD(a,b)函数与a%b效果同样sql
SELECT 3%2,mod(3,2)
比较运算符
比较运算符能够用于比较数字、字符串和表达式。数字做为浮点数比较,函数
字符串以不区分大小写的方式比较。spa
- NULL不能用于等于比较
SELECT 1=0,1=1,NULL=NULL;
- "<>"运算符,和"="相反。"NULL"不能用于“<>”比较
- “<=>”运算符,和"="相似,在操做数相等时值为1,不一样之处在于能够用于NULL 的比较。
"LIKE"运算符的使用格式为"a LIKE %123%", 当a中含有123时返回为1,不然返回03d
select 10 between 10 and 20, 9 between 10 and 20; select 1 in (1,2,3), 't' in ('t','a','b','l','e'), 0 in (1,2) SELECT 0 is null, null is null; select 0 is not null, null is not null; SELECT 123456 like '123%', 123456 like '%123%', 123456 like '%321%';
“regexp”运算符的使用格式为“str regexp str_pat”,当str字符串中含有str_pat相匹配的字符串时,则返回值为1,不然返回为0.code
SELECT 'abcdef' regexp 'ab', 'abcdefg' regexp 'k'
逻辑运算符
逻辑运算符(布尔运算符)regexp
位运算符
位运算是指将给定的操做数转化为二进制后,对各个操做数的每一位都进行逻辑运算。blog
select 2&3; select 2&3&4; select 2|3; select 2^3; select ~1, ~18446744073709551614; SELECT bin(18446744073709551614); select 100>>3; select 100<<3
经常使用函数
字符串函数
一些常见字符串函数运行结果:ci
任何字符串与NULL链接都是NULL字符串
select concat('aaa','bbbb','cccc'),concat('aaa',null);
select insert('beijing2008you',12,3,'me')
SELECT LOWER('BEIJING2008'), UPPER('bejing2008');
select left('beijing2008',7),LEFT('beijing',NULL),RIGHT("beijing2008",4)
select ltrim(' |beijing'),rtrim('beijing| ')
select repeat('mysql',3)
select replace('beijng_2020','_2020','2008')
select trim(' $ beijing2008 $ ')
select substring('beijng2008',8,4),substring('beijng2008',1,7)
数值函数
select ABS(-0.8), ABS(0.8)
SELECT CEIL(-0.8),CEIL(0.8)
SELECT FLOOR(-0.8),FLOOR(0.8)
SELECT MOD(15,10),MOD(1,11),MOD(NULL,10);
SELECT ceil(100*rand()),ceil(100*rand());
select round(1.1),round(1.1,2),round(1.0,3);
select round(1.235,2),truncate(1.235,2)
流程函数
流程函数用来提升语句效率
CREATE table salary(userid int, salary decimal(9,2)) INSERT INTO salary VALUES(1,1000),(2,2000),(3,3000),(4,4000),(5,null) SELECT * FROM salary
select if(salary>2000,'high','low') from salary;
select ifnull(salary,0) from salary;
select case when salary<=2000 then 'low' else 'high' end from salary;