Welcome 微信登录

首页 / 数据库 / MySQL / Oracle的几个函数在MySQL里面的简单实现

最忌在做Oracle到MySQL得迁移,以下我写了三个简单的MySQL里面米有的函数。 供大家参考。判断是否为时间?
  1. DELIMITER $$   
  2. USE `ytt`$$   
  3. DROP FUNCTION IF EXISTS `is_date`$$   
  4. CREATE DEFINER=`root`@`localhost` FUNCTION `is_date`(  
  5. f_in CHAR(19)) RETURNS TINYINT(4)  
  6. BEGIN  
  7.   -- Created by david.yang 2012/8/9.   
  8.   IF UNIX_TIMESTAMP(f_in) = 0 THEN  
  9.     RETURN 0;  
  10.   ELSE  
  11.     RETURN 1;  
  12.   END IF;  
  13. END$$  
  14.   
  15.   
  16. DELIMITER ;  
判断是否为数字?
  1. DELIMITER $$   
  2. USE `ytt`$$   
  3. DROP FUNCTION IF EXISTS `is_number`$$   
  4. CREATE DEFINER=`root`@`localhost` FUNCTION `is_number`(  
  5.     f_in VARCHAR(255)) RETURNS TINYINT(4)  
  6. label1:BEGIN  
  7.     -- Created by david.yang 2012/8/9.   
  8.     DECLARE cnt INT UNSIGNED DEFAULT 0;  
  9.     DECLARE i INT UNSIGNED DEFAULT 1;  
  10.     DECLARE j INT UNSIGNED DEFAULT 0;  
  11.     SET cnt = LENGTH(f_in);  
  12.     loop1:WHILE i < cnt  
  13.     DO  
  14.       SET j = ASCII(SUBSTR(f_in,i,1));  
  15.       IF  j < 48 OR j > 57 THEN  
  16.         RETURN 0;  
  17.         LEAVE label1;  
  18.       END IF;  
  19.       SET i = i + 1;  
  20.     END WHILE loop1;  
  21.     RETURN 1;  
  22.   END$$   
  23. DELIMITER ;  
ORACLE to_date 函数的MYSQL实现。
  1. DELIMITER $$  
  2.   
  3.   
  4. USE `ytt`$$  
  5.   
  6.   
  7. DROP FUNCTION IF EXISTS `to_date`$$  
  8.   
  9.   
  10. CREATE DEFINER=`root`@`localhost` FUNCTION `to_date`(  
  11.     f_date VARCHAR(30), f_format VARCHAR(30)  
  12.     ) RETURNS VARCHAR(30) CHARSET utf8  
  13. BEGIN  
  14.     -- "20-08-2011 22:55:02", "dd-mm-yyyy hh24:mi:ss"   
  15.     -- "02-11-2011", "dd-mm-yyyy"   
  16.     -- Created by david.yang 2012/8/9.   
  17.     DECLARE i_year CHAR(4);  
  18.     DECLARE i_month CHAR(2);  
  19.     DECLARE i_day CHAR(2);  
  20.     DECLARE i_time CHAR(8);  
  21.     SET i_year = SUBSTR(f_date,7,4);  
  22.     SET i_month = SUBSTR(f_date,4,2);  
  23.     SET i_day = LEFT(f_date,2);  
  24.       
  25.     IF LENGTH(f_date) = 10 THEN  
  26.       SET i_time = "";  
  27.     ELSE  
  28.       SET i_time = RIGHT(f_date,8);  
  29.     END IF;  
  30.     RETURN CONCAT(i_year,"-",i_month,"-",i_day," ",i_time);  
  31.     END$$    
  32.   
  33. DELIMITER ;  
MySQL 5.6同步复制新特性详解CentOS 安装MySQL相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数