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)    收藏  举报

导航