MySQL学习笔记(四)


   
第四章 MySQL函数(2010-8-17 23:02)

课程目录
    MySQL运算符
    MySQL流程控制函数
    MySQL字符串函数
    MySQL数字函数
    MySQL日期时间函数
    MySQL转换函数
    MySQL其他函数

1、运算符
    1)算术运算符
   =,!= (<>),>,>=,<,<=
  
   null
   is null,is not null,isnull(查询结果)
  
   between min and max
   in
  
  2)逻辑运算符
     在mysql中,返回值由 1(true)、0(false)和null实现
     not或! 逻辑非
     and或&& 逻辑与
     or 或|| 逻辑或
     xor 逻辑异或
    
     ifnull(exprl,value)
     如果exprl为非null的,ifnull返回value,否则返回exprl。
     ifnull()返回一个数字或字符串值,这取决于它被使用的语境。
    3) case.. when..
        case value when [条件] then result [when [条件] then result.. ] [else result] end
       
        当第一个为真值的条件,返回该条件的结果。如果没有匹配的结果值,
        那么else后的结果将被返回。如果没有else部分,那么null被返回。

  4)if(expr1,expr2,expr3)
  如果exprl为真(expr1<>0以及expr1<>null),那么if()返回expr2,否则返回expr3。
  if()返回一个数字或字符串,这取决于它被使用的语境。
  mysql->select if(1>2,3,4);
       ->4;
 
  5)nullif(expr1,expr2)
  如果expr1=expr2为真,返回null,否则返回expr1。
  它等同于case when expr1=expr2 then null else expr1 end;
 
  mysql->select nullif(1,1);
       ->null;
  6)括号
  ()括号,使用它来强制一个表达式的计算顺序。
 
2、字符串函数
 
  1)返回字符串str最左边的那个字符串的ASCII码值。
    ascii(x);
  mysql->select ASCII('2');
       ->50
  mysql->sleect ASCII(2);
       ->50 
      
  2)十进制转换成二进制  
    bin(x);
  mysql->select bin(12);
       ->'1100'
      
  3)十进制转换成八进制
    oct(x)
  mysql->select oct(12);
       ->'14'
      
  4)十进制转换成十六进制
    hex(x)
  mysql->select hex(255);
       ->'ff'   
      
  5)char()
  以整数类型解释参数,返回这个整数所代表的ascii码值给出的字符组成的字符串。
  null值将被忽略;
  mysql->select char(77,121,83,81,'76');
       ->'ff'
   
  5)char_length(str)
  返回字符串str的字符个数。
  mysql->select char_length('text');
       ->4 
      
  6)length(str)
  返回字符串的字节数。
  mysql->select length('王超');
       ->4   
      
  7)concat(str1,str2,..)
  将参数连接成字符串返回。如果有任何一个参数为null,返回值也为null。
  可以有超过2个的参数。数字参数将被转换为相等价的字符串形式。
  mysql->select concat('my','s','ql');
       ->mysql  
  mysql->select concat('my',null,'sql');
       ->null
  mysql->select concat(14.3,5);
       ->14.35 
      
  8)locate(子串substr,母串str)
  返回子串substr在字符串str中第一次出现的位置。如果子串substr在str中不存在,返回值为0;
  mysql->select locate('bar','foobar');
       ->4 
      
  9)instr(str,substr)
  返回子串substr在字符串str中第一次出现的位置。这与有两个参数形式的locate()相似,
  只是参数的位置被颠倒了;               
  mysql->select instr('foobar','bar');
       ->4   
      
  10)lpad(str,len,padstr)
  用字符串padstr对str进行左边填补直至它的长度达到len个长度,然后返回str。
  如果str的长度长于len,那么它将被截除到len个字符。
  mysql->select lpad('hi',6,'ba');
       ->'babahi'
      
  11)rpad(str,len,padstr)
  用字符串padstr对str进行右边填补直至它的长度达到len个长度,然后返回str。
  如果str的长度长于len,那么它将被截除到len个字符。
  mysql->select lpad('hi',6,'ba');
       ->'hibaba'    
      
  12)left(str,len)
  返回字符串str中最左边的len个字符;
  mysql->select left('wabcwang',2);
       ->'wa' 
      
  13)right(str,len)
  返回字符串str中最左边的len个字符;
  mysql->select right('wabcwang',2);
       ->'ng' 
      
  14)substring(str,pos,len)
  从字符串str的pos位置起返回len个字符的子串。
  mysql->select substring('wabcwang',2,4);
       ->'abcw'  
      
  mid(str,pos,len)=substring(str,pos,len)
 
  15)ltrim(str) rtrim(str)
  ltrim(str)返回移除了领头的空格字符后的str;
  rtrim(str)返回移除了尾部的空格字符后的str;
  mysql->select ltrim('   wabcwang');
       ->'wabcwang'  
 
  16)trim([[both|leading|trailing][remstr]from]str)
  移除字符串str中所有的remstr前缀或后缀,然后将其返回。
  没有任何both、leading或trailing修饰符被给出,both被假定。
  如果remstr没有被指定,空格将被移除。
  mysql->select trim('   wabcwang   ');
       ->'wabcwang' 
  mysql->select trim(leading '@' from '@@wabcwang@@');
       ->'wabcwang@@' 
  mysql->select trim(both '@' from '@@wabcwang@@');
       ->'wabcwang' 
      
  17)space(n)
  返回有n个空格字符组成的字符串 
 
  18)repeat()
  repeat(str,count)
  返回一个由重复了count次的字符串str组成的字符串。如果count<=0,
  返回一个空字符串。如果str或是count是null,返回值也为null。
  mysql->select repeat('wabc',3)
       ->'wabcwabcwabc'
      
  19)replace(str,from_str,to_str)
  在字符串str中所有出现的字符串from_str均被to_str替换,
  然后返回这个字符串。
  mysql->select replace('www.mysql.com','com','com.cn');
       ->'www.mysql.com.cn'
  
  20)reverse(str)
  以颠倒的字符顺序返回字符串str;
  mysql->select reverse('abc');
       ->'cba'
      
  21)lcase(str) lower(str)
  依照当前字符集设置映射,将字符串str中的所有字符串改变为小写,然后返回该值。
 
  22)ucase(str) upper(str)
  依照当前字符集设置映射,将字符串str中的所有字符串改变为大写,然后返回该值。
 
  23)load_file(file_name)
  读入文件,并将文件内容作为一个字符串返回。这个文件必须在服务器上,
  必须指定文件完整的路径名,并且你必须有file权限。文件必须完全可读,
  并且小于max_allowed_packet。如果该文件不存在,或因为上面的任一原因不能被读出,
  函数返回null。
 
3、算术运算

  常用的算术操作符均是可用的。加减乘除
  注意被零除返回null。
  如果一个参数是一个无符号的整数,另一个参数也是一个整数,结果也将是一个
  无符号整数。
 
  1) abs(x)
  绝对值
  2) div()取商
  mysql->select 5 div 2;
       ->2;
  3) %或是mod 取模
  mysql->select 5 mod 2;
       ->1;
      
     mod(n,m)
     取模返回n被m除后的余数。
  4) floor(x)
  返回不大于x的最大整数
  mysql->select floor(2.1);
       ->2;
  mysql->select floor(-2.1);
       ->-3;
      
  5) ceiling(x)
  返回大于x的最小整数
  mysql->select ceiling(1.23);
       ->2
  mysql->sleect ceiling(-1.23);
       ->-1    
  6) round(x)
  将参数x四舍五入到最近的整数,然后返回
  round(x,d)
  将一个数字四舍五入到d个小数后返回
  mysql->select round(1.2333,3);
       ->1.233
  7) exp(x)
  返回值e的x次方
 
  8) ln(x)
     log(x)
  返回x的自然对数
 
  9) log(b,x)
  返回x任意底b的对数;
 
  10) sqrt(x)
  返回x的非负平方根
 
  11) pi()
  返回pi值-圆周率。缺省显示五位小数,但是在mysql内部,为pi使用全部的双精度
 
  mysql->select pi()+0.000000000000000;
       ->3.141592653589793116
  12) sin/cos/tan(x)
  返回x的正弦/余弦/正切
 
  13) acos/asin/atan(x)
  返回x的反余弦/反正弦/反正切
 
  14)rand()
      rand(n)
  返回一个范围在0到1.0之间的随机浮点值。
  如果一个整数参数n被指定,它被当做种子值使用(用于产生一个可重复的数值)
 
4、时间函数
  
   1) now()
      sysdate()
      current_timestamp
      以“yyyy-mm-dd hh:mm:ss” 或是yyyymmddhhmmmss格式返回当前的日期时间值,
      返回的格式取决于该函数是用于字符串还是数字语境中。
     
   2) curdate()
      current_date
      以“yyyy-mm-dd” 或yyyymmdd格式返回当前的日期值
      返回的格式取决于该函数是用于字符串还是数字语境中。
     
   3) curtime()
      current_time
      以“hh:mm:ss”或hhmmss格式返回当前的时间值
      返回的格式取决于该函数是用于字符串还是数字语境中。
     
5、转换函数
  
   1) 隐式转换
   2)显示转换
   cast(expression as type)
   convert(expression ,type)
  
6、其它函数
   1) database()
   返回当前数据库名
  
   2) user()
      system_user()
      session_user()
      返回当前mysql用户名
     
   3) password(str)
      old_password(str)
     
      从纯文本口令str计算一个口令字符串。这个函数对存储到
      授权表user的password列中的mysql口令进行加密
     
----------------------------------------------------------------------------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值