Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4520422
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: Mysql/postgreSQL

2011-08-08 13:34:42

   在mysql中也内置了各种类型的操作函数,包括--字符串处理、字符串查找、字符串匹配、控制、为操作、日期时间以及数学函数等。


1. 字符串操作函数
   1 字符串比较
      1. 利用like 语句
       2. 利用 not like 语句
   2. 正则表达式
   3. 计算长度
        length
        bit_length
   4.子串查找
        substring(str,pos)
        substring(str,pos,len)
        right(str,pos)
        left(str,pos)
        locate(substr,str)
2.控制函数
   1. NULL测试
        ifnull
        nullif
   2. IF
   3. Case
3.数学函数
   1。 四则运算
   2. 高级运算
         round
         log
         pow、
         rand
4. 时间和日期函数
    1. weekday 
    2. dayofyear
    3. now
    4. to_days

5. 加密函数
    md5
    encode decode
    sha sha1

1. 字符串操作函数

  1.1 字符串比较
        在mysql中可以利用正则表达式对字符串进行比较,当字符串匹配时,返回1,否则返回0,通常用到的操作命令有如下几种:
        1.1.1 利用like语句
模式字符: % 匹配任意个字符,包括零字符
           _ 严格匹配一个字符
  1. mysql> select '1234' like '12_';
  2. +-------------------+
  3. | '1234' like '12_' |
  4. +-------------------+
  5. | 0 |
  6. +-------------------+
  7. 1 row in set (0.00 sec)

  8. mysql> select '12_%32' like '12\_\%%';
  9. +-------------------------+
  10. | '12_%32' like '12\_\%%' |
  11. +-------------------------+
  12. | 1 |
  13. +-------------------------+
  14. 1 row in set (0.00 sec)

  15. mysql> select '1232' like '12%';
  16. +-------------------+
  17. | '1232' like '12%' |
  18. +-------------------+
  19. | 1 |
  20. +-------------------+
  21. 1 row in set (0.00 sec)

       1.1.2 利用not like 语句
  1. mysql> select '1' not like '1%2323';
  2. +-----------------------+
  3. | '1' not like '1%2323' |
  4. +-----------------------+
  5. | 1 |
  6. +-----------------------+
  7. 1 row in set (0.00 sec)

    1.2正则表达式

  like是一种字符串比较模式,但在mysql中也实现了更为强大的正则表达式查找。
   正则表达式的命令格式形如:

expr regexp pat
   表达式的含义是:模式pat对字符串表达式expr执行一次正则表达式的比较,其中模式可以是一个扩展的正则表达式。
   如果表达式exprpat,则返回1,否则返回0
  1. mysql> select '1' rlike '^1$'
  2.     -> ;
  3. +-----------------+
  4. | '1' rlike '^1$' |
  5. +-----------------+
  6. | 1 |
  7. +-----------------+
  8. 1 row in set (0.00 sec)

  9. mysql> select '1' regexp '^1$';
  10. +------------------+
  11. | '1' regexp '^1$' |
  12. +------------------+
  13. | 1 |
  14. +------------------+
  15. 1 row in set (0.00 sec)
这里 rlike 和 regexp的效果一样

    1.3 计算长度

    可以利用length函数计算字符串的长度,结果返回字符串的个数,如果字符串为NULL,则返回NULL
  1. mysql> select length('123456789');
  2. +---------------------+
  3. | length('123456789') |
  4. +---------------------+
  5. | 9 |
  6. +---------------------+
  
    另外利用bit_length,能够返回字符串所占用的比特长度,使用如下

  1. mysql> select bit_length('12345');
  2. +---------------------+
  3. | bit_length('12345') |
  4. +---------------------+
  5. | 40 |
  6. +---------------------+

    1.4 子串查找

1. substring(str,pos),用于返回字符串str的pos位置之后的子串
2. substring(str,pos,len)与上一函数类似,用于返回字符串str的pos位置后len个字符的子串。
3. right(str,pos) 用于返回字符串str最右边的len个字符
4. left(str,pos) 用于返回字符串str最左边的len个字符
5. locate(substr,str) 用于返回子串substr在字符串str最开始出现的位置
  1. mysql> select locate('123','122123223');
  2. +---------------------------+
  3. | locate('123','122123223') |
  4. +---------------------------+
  5. | 4 |
  6. +---------------------------+


2. 控制函数


    控制函数是用于流程的控制,类似于脚本语言的IF..ELSE等,

    2.1. NULL 测试

           有两个MULL的测试函数,分别是IFNULL 和 NULLIF,
IFNULL(expr1,expr2),如果exp1为非NULL,则返回exp1,否则返回exp2
  1. mysql> select ifnull(null,32);
  2. +-----------------+
  3. | ifnull(null,32) |
  4. +-----------------+
  5. | 32 |
  6. +-----------------+
  7. 1 row in set (0.00 sec)

  8. mysql> select ifnull(0,32)
  9.     -> ;
  10. +--------------+
  11. | ifnull(0,32) |
  12. +--------------+
  13. | 0 |
  14. +--------------+
  15. 1 row in set (0.00 sec)

   nullif(exp1,exp2),如果exp1与exp2相等,则返回null,否则返回exp1


    2.2 IF
  IF函数原型 IF(exp1,exp2,exp3), 它所表达的意思是: 如果exp1为真,那么返回exp2,否则返回exp3
  1. mysql> select if(12,'32',33);
  2. +----------------+
  3. | if(12,'32',33) |
  4. +----------------+
  5. | 32 |
  6. +----------------+
  7. 1 row in set (0.00 sec)

   2.3 Case
    case 函数有两种表现形式

   第一种形式下,case 会执行与value相匹配的 compare-value,如果没有则直接返回NULL



   3. 数学函数

   3.1 四则运算
    
  1. mysql> select (2-3)*(2+3)*9/3;
  2. +-----------------+
  3. | (2-3)*(2+3)*9/3 |
  4. +-----------------+
  5. | -15.0000 |
  6. +-----------------+
  7. 1 row in set (0.00 sec)

   3.2 高级运算

     3.2.1  round 函数,进行四舍五入,
  1. mysql> select round(9.2);
  2. +------------+
  3. | round(9.2) |
  4. +------------+
  5. | 9 |
  6. +------------+
  7. 1 row in set (0.00 sec)

    3.2.2 可以利用log函数,进行对数求解,log函数的原型是log(b,x)
  1. mysql> select log(2,4);
  2. +----------+
  3. | log(2,4) |
  4. +----------+
  5. | 2 |
  6. +----------+

   3.3.3 pow(x,y) 计算出 x的y次方
   3.3.4 rand()  计算出0-1.0之间的系统随机数
   3.3.5 randians 能够将一个角度转化为弧度



4. 时间与日期函数


   weekday 用于返回某一天的星期索引,即如果为星期一,则返回0,如果是星期六,返回6

  1. mysql> select weekday('2011-10-2');
  2. +----------------------+
  3. | weekday('2011-10-2') |
  4. +----------------------+
  5. | 6 |
  6. +----------------------+

    dayofyear 用于返回某一天 处于当前的第几天

  1. mysql> select dayofyear('2011-11-7');
  2. +------------------------+
  3. | dayofyear('2011-11-7') |
  4. +------------------------+
  5. | 311 |
  6. +------------------------+

   now ,用户返回当前的时间

  1. mysql> select now();
  2. +---------------------+
  3. | now() |
  4. +---------------------+
  5. | 2011-08-08 14:22:47 |
  6. +---------------------+


to_days 用于返回从0年到某一日期所经过的天数

  1. mysql> select to_days('2009-1-1');
  2. +---------------------+
  3. | to_days('2009-1-1') |
  4. +---------------------+
  5. | 733773 |
  6. +---------------------+

date_format  的


5. 加密函数

   1. md5 
  1. mysql> select md5('hello world');
  2. +----------------------------------+
  3. | md5('hello world') |
  4. +----------------------------------+
  5. | 5eb63bbbe01eeed093cb22bb8f5acdc3 |
  6. +----------------------------------+

  2. encode 和 decode

  encode(str,pass_str)
  decode(crypt_str,pass_str)


3. sha  和 sha1







阅读(1211) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~