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

本文提供了Oracle到MySQL迁移过程中所需的自定义函数,包括判断输入是否为日期或数字的函数,以及一个模仿Oracle to_date函数的功能,用于转换日期格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最忌在做ORACLE到MYSQL得迁移,以下我写了三个简单的MYSQL里面米有的函数。 供大家参考。




判断是否为时间?
  1. DELIMITER$$
  2. USE`ytt`$$
  3. DROPFUNCTIONIFEXISTS`is_date`$$
  4. CREATEDEFINER=`root`@`localhost`FUNCTION`is_date`(
  5. f_inCHAR(19))RETURNSTINYINT(4)
  6. BEGIN
  7. --Createdbydavid.yang2012/8/9.
  8. IFUNIX_TIMESTAMP(f_in)=0THEN
  9. RETURN0;
  10. ELSE
  11. RETURN1;
  12. ENDIF;
  13. END$$
  14. DELIMITER;





判断是否为数字?
  1. DELIMITER$$
  2. USE`ytt`$$
  3. DROPFUNCTIONIFEXISTS`is_number`$$
  4. CREATEDEFINER=`root`@`localhost`FUNCTION`is_number`(
  5. f_inVARCHAR(255))RETURNSTINYINT(4)
  6. label1:BEGIN
  7. --Createdbydavid.yang2012/8/9.
  8. DECLAREcntINTUNSIGNEDDEFAULT0;
  9. DECLAREiINTUNSIGNEDDEFAULT1;
  10. DECLAREjINTUNSIGNEDDEFAULT0;
  11. SETcnt=LENGTH(f_in);
  12. loop1:WHILEi<cnt
  13. DO
  14. SETj=ASCII(SUBSTR(f_in,i,1));
  15. IFj<48ORj>57THEN
  16. RETURN0;
  17. LEAVElabel1;
  18. ENDIF;
  19. SETi=i+1;
  20. ENDWHILEloop1;
  21. RETURN1;
  22. END$$
  23. DELIMITER;





ORACLE to_date 函数的MYSQL实现。



  1. DELIMITER$$
  2. USE`ytt`$$
  3. DROPFUNCTIONIFEXISTS`to_date`$$
  4. CREATEDEFINER=`root`@`localhost`FUNCTION`to_date`(
  5. f_dateVARCHAR(30),f_formatVARCHAR(30)
  6. )RETURNSVARCHAR(30)CHARSETutf8
  7. BEGIN
  8. --'20-08-201122:55:02','dd-mm-yyyyhh24:mi:ss'
  9. --'02-11-2011','dd-mm-yyyy'
  10. --Createdbydavid.yang2012/8/9.
  11. DECLAREi_yearCHAR(4);
  12. DECLAREi_monthCHAR(2);
  13. DECLAREi_dayCHAR(2);
  14. DECLAREi_timeCHAR(8);
  15. SETi_year=SUBSTR(f_date,7,4);
  16. SETi_month=SUBSTR(f_date,4,2);
  17. SETi_day=LEFT(f_date,2);
  18. IFLENGTH(f_date)=10THEN
  19. SETi_time='';
  20. ELSE
  21. SETi_time=RIGHT(f_date,8);
  22. ENDIF;
  23. RETURNCONCAT(i_year,'-',i_month,'-',i_day,'',i_time);
  24. END$$
  25. DELIMITER;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值