MySql
1.length:计算字段的长度。一个汉字-->3个字符,一个数字或字母-->1个字符
select length(username) from user;
select * from user where length(username)>6;
2.UNIX_TIMESTAMP:将时间转化为时间戳。date类型转化为timestamp整数(秒数)。
FROM_UNIXTIME:将timestamp 形式整数 转化为 date类型。
select UNIX_TIMESTAMP(ifnull(hangup_time; create_time)) - UNIX_TIMESTAMP(dial_time) from call_log;
select from_unixtime(1355272360);
PS:
目前timestamp 所能表示的范围在 1970 - 2038之间 。超过这个范围 得到的时间将会溢出 得到的时间是null。
select from_unixtime(0); >>> 1970-01-01 08:00:00
select from_unixtime(2147483647); >>> 2038-01-19 11:14:07
select UNIX_TIMESTAMP('2038-01-19 11:14:08') >>> 0
3.select for update
在SELECT 的读取锁定主要分为两种方式:
SELECT ... LOCK IN SHARE MODE
SELECT ... FOR UPDATE
这两种方式在事务(Transaction) 进行当中SELECT 到同一个数据表时,都必须等待其它事务数据被提交(Commit)后才会执行。而主要的不同在于LOCK IN SHARE MODE 在有一方事务要Update 同一个表单时很容易造成死锁 。
4.判断语句
select if(sex=1,'男','女') as 性别 from User where id=1
select CASE
WHEN platform=1 THEN '平台1'
WHEN platform=2 THEN '平台2'
ELSE '非平台' END
select CASE platform
WHEN 1 THEN '平台1'
WHEN 2 THEN '平台2'
ELSE '非平台' END
SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END
IFNULL(expr1,expr2)
假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串
IFNULL(expr1,expr2)的默认结果值为两个表达式中更加“通用”的一个,顺序为STRING、 REAL或 INTEGER。