• mysql 点滴


    1,concat
    举个例子 select concat('aa','bb');------------最终显示的就是 aabb,同时,concat有 to_char的作用,就是把其他类型转成varchar类型的

    2,存储过程中 if else

             create procedure text(
                          out rtn int
                                      )
                 begin
               declare LoginId INT default 0;
               set rtn=1;
              IF LoginId = 3
              THEN
              set rtn=2;
              ELSEIF LoginId = 0
              THEN
              set rtn=3;
              ELSE
              set rtn=4;
               END IF;
                 end

       3,LOCATE

    类似indexOf方法

    LOCATE(substr,str)
     

    返回子串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0.
    mysql> select LOCATE('bar', 'foobarbar');
    -> 4
    mysql> select LOCATE('xbar', 'foobar');
    -> 0 

       4,FIND_IN_SET(str,strlist)

    假如字符串str 在由N 子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。
    一个字符串列表就是一个由一些被‘,’符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则   FIND_IN_SET() 函数被优化,使用比特计算。
    如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。 

     

      5,group_concat

    函数语法:

    group_concat( [DISTINCT]  要连接的字段   [Order BY 排序字段 ASC/DESC]   [Separator '分隔符'] ) 

    select id, group_concat(price) from goods group by id;  

    select id,group_concat(price separator ';') from goods group by id;  

    select id,group_concat(distinct price) from goods group by id;  

    select id,group_concat(price order by price desc) from goods group by id;  

      6,UNIX_TIMESTAMP,FROM_UNIXTIME

    SELECT UNIX_TIMESTAMP('2014-12-25');

    输出:1419436800

    SELECT FROM_UNIXTIME(1419436800);

    输出:'2014-12-25'

      7,date_sub,date_add 

    select date_add('2008-08-08 12:00:00', interval -8 hour); -- 2008-08-08 04:00:00
    select date_sub('2008-08-08 12:00:00', interval 8 hour); -- 2008-08-08 04:00:00
    SELECT UNIX_TIMESTAMP(CONCAT( DATE_SUB(curdate(), INTERVAL 1 DAY) ,' 10:00'));-- 获得昨天10:00时间戳

      8,用临时表批量更新

    创建临时表,先更新临时表,然后从临时表中update

    create temporary table tmp(id int(4) primary key,dr varchar(50));
    insert into tmp values  (0,'gone'), (1,'xx'),...(m,'yy');
    update test_tbl, tmp set test_tbl.dr=tmp.dr where test_tbl.id=tmp.id;

    注意:这种方法需要用户有temporary 表的create 权限

       9,游标

    DELIMITER $$

    DROP PROCEDURE IF EXITS cursor_example$$
    CREATE PROCEDURE cursor_example()
    READS SQL DATA
    BEGIN
    DECLARE l_employee_id INT;
    DECLARE l_salary NUMERIC(8,2);
    DECLARE l_department_id INT;
    DECLARE done INT DEFAULT 0;
    DECLARE cur1 CURSOR FOR SELECT employee_id, salary, department_id FROM employees;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;

    OPEN cur1;
    emp_loop: LOOP
    FETCH cur1 INTO l_employee_id, l_salary, l_department_id;
    IF done=1 THEN
    LEAVE emp_loop;
    END IF;
    END LOOP emp_loop;
    CLOSE cur1;
    END$$
    DELIMITER ;



     

  • 相关阅读:
    tomcat常见报错解决方法汇总
    C++中socket编程
    Winsock解析
    等价类划分的原则
    在线编译器
    条件覆盖,路径覆盖,语句覆盖,分支覆盖解释
    并发测试
    针对C程序员的 C++
    缸中之脑
    什么是薛定谔的猫
  • 原文地址:https://www.cnblogs.com/xjt360/p/4030693.html
Copyright © 2020-2023  润新知