ORACLE的几个函数在MYSQL里面的简单实现 笔记

来源:互联网 发布:淄博网络推广 编辑:程序博客网 时间:2024/06/07 01:01
最忌在做ORACLE到MYSQL得迁移,以下我写了三个简单的MYSQL里面米有的函数。 供大家参考。 




判断是否为时间?
[sql] view plaincopy
  1. DELIMITER $$  
  2.   
  3.   
  4. USE `ytt`$$  
  5.   
  6.   
  7. DROP FUNCTION IF EXISTS `is_date`$$  
  8.   
  9.   
  10. CREATE DEFINER=`root`@`localhost` FUNCTION `is_date`(  
  11. f_in CHAR(19)) RETURNS TINYINT(4)  
  12. BEGIN  
  13.   -- Created by david.yang 2012/8/9.  
  14.   IF UNIX_TIMESTAMP(f_in) = 0 THEN  
  15.     RETURN 0;  
  16.   ELSE  
  17.     RETURN 1;  
  18.   END IF;  
  19. END$$  
  20.   
  21.   
  22. DELIMITER ;  





判断是否为数字?
[sql] view plaincopy
  1. DELIMITER $$  
  2.   
  3.   
  4. USE `ytt`$$  
  5.   
  6.   
  7. DROP FUNCTION IF EXISTS `is_number`$$  
  8.   
  9.   
  10. CREATE DEFINER=`root`@`localhost` FUNCTION `is_number`(  
  11.     f_in VARCHAR(255)) RETURNS TINYINT(4)  
  12. label1:BEGIN  
  13.     -- Created by david.yang 2012/8/9.  
  14.     DECLARE cnt INT UNSIGNED DEFAULT 0;  
  15.     DECLARE i INT UNSIGNED DEFAULT 1;  
  16.     DECLARE j INT UNSIGNED DEFAULT 0;  
  17.     SET cnt = LENGTH(f_in);  
  18.     loop1:WHILE i < cnt  
  19.     DO  
  20.       SET j = ASCII(SUBSTR(f_in,i,1));  
  21.       IF  j < 48 OR j > 57 THEN  
  22.         RETURN 0;  
  23.         LEAVE label1;  
  24.       END IF;  
  25.       SET i = i + 1;  
  26.     END WHILE loop1;  
  27.     RETURN 1;  
  28.   END$$  
  29.   
  30.   
  31. DELIMITER ;  





ORACLE to_date 函数的MYSQL实现。



[sql] view plaincopy
  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.   
  34. DELIMITER ;