mysql学习八:mysql常用函数
一、日期和时间函数:
- curdate() 返回当前日期
- curtime() 返回当前时间
- month(d) 返回日期d中的月份值,范围是1-12
select curdate(), curtime(),month(birthday) as month from test;
二、字符串函数
- char_length(s) 计算字符串s的字符数
- upper(s) 把字符串中所有字母都变成大写
- lower(s) 把字符串中所有字母都变成小写
select userName, upper(userName), lower(userName),char_length(userName) from test;
三、数学函数
- abs(x) 求绝对值
- sqrt(x) 求平方根
- mod(x, y) 求余
select num, abs(num), sqrt(num), mod(num,2) from test;
四、加密函数
password(str) 一般对用户的密码加密,不可逆
md5(str) 普通加密,不可逆
encode(str, pswd_str) 加密函数,结果是一个二进制数,必须使用blob类型的字段来保存它;
decode(crypt_str, pswd_str) 解密函数
insert into test values(3, '2013-1-5', 'candy', 1, password('123456')); insert into test values(3, '2013-1-5', 'alice', 1, md5('123456'));
insert into test values(3, '2013-1-5', 'jancy', 1, md5('123456'), encode('123456', 'abc')); select encodeString, decode(encodeString, 'abc') from test;
其它:
conv(N, 原来的进制,新的进制)
hex(N)相当于conv(N,10,16)
select conv(10, 10, 16); # A select hex(10); # A
oct(N)相当于conv(N,10,8)
select conv(10, 10, 8); # 12 select hex(8); # 12
bin(N)相当于conv(N,10,2)
select conv(10, 10, 2); # 1010 select bin(10); # 1010
substring(字符串,位置)
substring(字符串,from 位置)
select substring('this is mysql language', 9); select substring('this is mysql language', -14); # mysql language select substring('this is mysql language', from 9); select substring('this is mysql language', from -14); # mysql language
substring(字符串,位置,长度)
substring(字符串,from 位置 for 长度)
select substring('this is mysql language', 9, 5); select substring('this is mysql language', -14, 5); # mysql select substring('this is mysql language', from 9 for 5); select substring('this is mysql language', from -14 for 5); # mysql
逻辑元素符
逻辑运算符的求值所得结果均为1(TRUE)、0(FALSE),这类运算符有逻辑非(NOT或者!)、逻辑与(AND或者&&)、逻辑或(OR或者||)、逻辑异或(XOR)。
位操作运算符
参与运算符的操作数,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)6种。
如果参与的不是二进制,则需转为二进制再做比较;如果是字符型数值,会自动转数值。
select '010' & '001'; select 010 & 001; select 002 & 001; #以上计算的结果都是0
LPAD(str,len,padstr)
返回字符串str,左填充用字符串padstr填补到len字符长度。 如果str为大于len长,返回值被缩短至len个字符(即,不能超过 len 长)。
SELECT LPAD('hi', 4, '?'); # ??hi SELECT LPAD('hihihihi', 4, '?'); # hihi SELECT RPAD('hi', 4, '?'); # hi?? SELECT RPAD('hihihihi', 4, '?'); # hihi
IF(expr1,expr2,expr3):如果第一个表达式的值为TRUE(不为0或null),则返回第二个参数的值,否则返回第三个参数的值。
select if(true, 1, 2); # 1 select if(false, 1, 2); # 2 select if(null, 1, 2); # 2
IFNULL(expr1,expr2),含义是:如果第一个参数不为空,则返回第一个参数,否则返回第二个参数。
select ifnull(1, 0); # 1 select ifnull(0, 1); # 0
concat(str1, str2)–连接字符串:连接一个或者多个字符串,若其中一个为null,则返回null
select concat('11', '22', '33'); # 112233 select concat('0', '1','2'); # 012 select concat(0, 1,2); # 012 select concat(FALSE, 1, 2); # 012 select concat(null, 1, 2); # null
concat_ws(separator,str1,str2,…):第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。
和concat函数不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL
select concat_ws(',', 1, 2, null, 3); # '1,2,3'
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])
select pid,group_concat(title) from z_area where level=2 group by pid limit 10, 5;
select pid,group_concat(distinct title separator '|' ) from z_area where level=2 group by pid limit 10, 5;
repeat(要复制的字符串,复制的份数):
select repeat('ab',2); # abab
posted on 2018-09-16 21:01 myworldworld 阅读(441) 评论(0) 收藏 举报