mysql - 常用方法
处理字符:
1:concat('aaa', 'bbb', 'ccc')
拼接字符串,oracle也有这个方法不过只能拼接2个,而且一般用 ‘||’ 。。
mysql中‘||’表示或。相当于or
2:ifnull(name,'aaa')
当name = null时,返回'aaa'
3.upper('aaa'),lower('AAA')
变为大写,小写
4.substr
substr('abc张三', 1, 4) = abc张
从第一个字符开始,截取4位
substr('abc张三', 4) = 张三
从第4个字符开始截取到最后(字符包括汉字,每个汉字是一个字符)
mysq的lindex是从1开始- -,比较搞。。。
5.length
length('abc张三') = 9
length是字节长度,mysql汉字等于 3个字节,字母和符号时1个。
也挺搞的 - -
6.instr
instr('aaa', 'abcaaabbbcccaaa') = 4
返回子串在父串第一次出现的位置,没有返回0
7.trim
trim('a' from 'aaabbbaaabbbaaa') = 'bbbaaabbb'
去掉前后的a
trim(' aaa ') = 'aaa'
去掉前后空格
8.lpad,rpad
lpad('张三', 5, 'aaa') = aaa张三
左边填充aaa直到字符串有5个字符
rpad('张三', 8, 'ab') = 张三ababab
右边填充ab直到字符串有8个字符。
9.replace
replace('张三李四王五', '王五', '赵六') = 张三李四赵六
替换
数字方法
1.round
round(1.23) = 1
四舍五入
round(1.23, 1) = 1.2
四舍五入留1位
ceil
向上取整
cell(1.6) = 2
ceil(-1.6) = -1;
floor
向下取整
truncate
截断
2.mod
mod(10,3) = 10%3 = 1
mod(-10,-3) = -1
3.abs
abs(-111) = -1
abs('aaa') = 0
取绝对值,不是数字返回0
日期:
1. now()
当前时间
2.curdate
当前日期,不包含时间
3.currenttime
当前时间
4.year()
year(now()) = 2019
year('2019-05-26') = 2019
year('1990/05/26') = 1990
获取括号中日期的年份,日期格式的字符串也可以
month,day,hour等同理
month('2019-05-26') = 5
monthname('2019-05-26') = May
5. str_to_date()
把字符串按照后面的格式解析变为时间,错误返回null
%Y = 4位年份, %y = 2位年份
%m = 月(01,02), %c = 月(1,2) , 这两个貌似测试的时候混了也没事。。。
%d = 日
%H = 24制小时, %h = 12制小时 如果%h 而小时是20不会自动转化,会错误返回null
%i = 分
%s = 秒
6.date_format
7。时间差
datediff (天数差)
select datediff(now(),'1990-05-26');
timestampdiff ( 单位, date1, date2)
SELECT TIMESTAMPDIFF(YEAR, '1990-05-26', NOW()),
TIMESTAMPDIFF(MONTH, '1990-05-26', NOW()),
TIMESTAMPDIFF(DAY, '1990-05-26', NOW()),
TIMESTAMPDIFF(HOUR, '1990-05-26', NOW()),
TIMESTAMPDIFF(MINUTE, '1990-05-26', NOW()),
TIMESTAMPDIFF(SECOND, '1990-05-26', NOW());
前面的时间 - 后面的时间,结果可以为负数
数据库方法:
1.version()
版本号
2.database()
显示当前数据库名
3.user()
当前用户
流程控制函数:
1.if
if(条件,条件为true时,条件为false时)
2.case
case 参数
when 值1 then 结果1,
when 值2 then 结果2,
...
else 其他情况结果
end
case
when 条件1 then 结果1,
when 条件2 then 结果2,
...
else 其他情况结果
end
与标题无关的笔记。。。
排序
order by name desc, id asc
按名字从大到小排列(字符串从头开始依次比较asc码),name相同时,按id从小到大排列