Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4184032
  • 博文数量: 240
  • 博客积分: 11504
  • 博客等级: 上将
  • 技术积分: 4277
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-28 14:24
文章分类

全部博文(240)

分类: Mysql/postgreSQL

2012-08-13 12:03:23

最忌在做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. 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. USE `ytt`$$

  3. DROP FUNCTION IF EXISTS `to_date`$$

  4. CREATE DEFINER=`root`@`localhost` FUNCTION `to_date`(
  5.     f_date VARCHAR(30), f_format VARCHAR(30)
  6.     ) RETURNS VARCHAR(30) CHARSET utf8
  7. BEGIN
  8.     -- '20-08-2011 22:55:02', 'dd-mm-yyyy hh24:mi:ss'
  9.     -- '02-11-2011', 'dd-mm-yyyy'
  10.     -- Created by david.yang 2012/8/9.
  11.     DECLARE i_year CHAR(4);
  12.     DECLARE i_month CHAR(2);
  13.     DECLARE i_day CHAR(2);
  14.     DECLARE i_time CHAR(8);
  15.     SET i_year = SUBSTR(f_date,7,4);
  16.     SET i_month = SUBSTR(f_date,4,2);
  17.     SET i_day = LEFT(f_date,2);
  18.     
  19.     IF LENGTH(f_date) = 10 THEN
  20.       SET i_time = '';
  21.     ELSE
  22.       SET i_time = RIGHT(f_date,8);
  23.     END IF;
  24.     RETURN CONCAT(i_year,'-',i_month,'-',i_day,' ',i_time);
  25.     END$$

  26. DELIMITER ;

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