最忌在做ORACLE到MYSQL得迁移,以下我写了三个简单的MYSQL里面米有的函数。 供大家参考。
判断是否为时间?
判断是否为数字?
判断是否为时间?
- DELIMITER$$
- USE`ytt`$$
- DROPFUNCTIONIFEXISTS`is_date`$$
- CREATEDEFINER=`root`@`localhost`FUNCTION`is_date`(
- f_inCHAR(19))RETURNSTINYINT(4)
- BEGIN
- --Createdbydavid.yang2012/8/9.
- IFUNIX_TIMESTAMP(f_in)=0THEN
- RETURN0;
- ELSE
- RETURN1;
- ENDIF;
- END$$
- DELIMITER;
判断是否为数字?
- DELIMITER$$
- USE`ytt`$$
- DROPFUNCTIONIFEXISTS`is_number`$$
- CREATEDEFINER=`root`@`localhost`FUNCTION`is_number`(
- f_inVARCHAR(255))RETURNSTINYINT(4)
- label1:BEGIN
- --Createdbydavid.yang2012/8/9.
- DECLAREcntINTUNSIGNEDDEFAULT0;
- DECLAREiINTUNSIGNEDDEFAULT1;
- DECLAREjINTUNSIGNEDDEFAULT0;
- SETcnt=LENGTH(f_in);
- loop1:WHILEi<cnt
- DO
- SETj=ASCII(SUBSTR(f_in,i,1));
- IFj<48ORj>57THEN
- RETURN0;
- LEAVElabel1;
- ENDIF;
- SETi=i+1;
- ENDWHILEloop1;
- RETURN1;
- END$$
- DELIMITER;
ORACLE to_date 函数的MYSQL实现。
- DELIMITER$$
- USE`ytt`$$
- DROPFUNCTIONIFEXISTS`to_date`$$
- CREATEDEFINER=`root`@`localhost`FUNCTION`to_date`(
- f_dateVARCHAR(30),f_formatVARCHAR(30)
- )RETURNSVARCHAR(30)CHARSETutf8
- BEGIN
- --'20-08-201122:55:02','dd-mm-yyyyhh24:mi:ss'
- --'02-11-2011','dd-mm-yyyy'
- --Createdbydavid.yang2012/8/9.
- DECLAREi_yearCHAR(4);
- DECLAREi_monthCHAR(2);
- DECLAREi_dayCHAR(2);
- DECLAREi_timeCHAR(8);
- SETi_year=SUBSTR(f_date,7,4);
- SETi_month=SUBSTR(f_date,4,2);
- SETi_day=LEFT(f_date,2);
- IFLENGTH(f_date)=10THEN
- SETi_time='';
- ELSE
- SETi_time=RIGHT(f_date,8);
- ENDIF;
- RETURNCONCAT(i_year,'-',i_month,'-',i_day,'',i_time);
- END$$
- DELIMITER;