oracle数据库与mysql函数之间的一些转换

date_format(date,'%Y-%m-%d')     -------------->oracle中的to_char(); to_char函数功能,就是将数值型或者日期型转化为字符型

str_to_date(date,'%Y-%m-%d')     -------------->oracle中的to_date();


 

oracle decode函数对应的mysql语句处理

如下示例

 select  

        case

        when  t.task_type=11 then  1

        when  t.task_type=12 then  2   

        when  t.task_type=13 then  3

        when  t.task_type=14 then  4

        ELSE  a.manange_id

        end  as  manange_id

        from 表名称

Oracle中concat使用以及与||区别:

CONCAT只能连接两个字符串

例:concat( string1, string2 )

--concat只能连接两个字符串,连接多个需要嵌套调用不方便

SQL> select concat('aa','bb') from dual;

CONCAT('AA','BB')

-----------------

aabb

--但是   ||  可以直接连接多个字符串

SQL> select 'aa'||'bb'||'cc' from dual;

'AA'||'BB'||'CC'

mysql中concat使用:

mysql中concat函数,可以连接多个字符串

语法:concat(str1,str2,str3,...)


 

concat(floor(q.manPhoneCallTimeCount / 3600),':',floor(mod(q.manPhoneCallTimeCount, 3600) / 60),':',mod(q.manPhoneCallTimeCount, 60))

concat(floor(q.autoPhoneCallTime / 3600),':',floor(mod(q.autoPhoneCallTime, 3600) / 60),':', mod(q.autoPhoneCallTime, 60))

concat(floor(q.effectAutoPhoneCallTime / 3600),':',floor(mod(q.effectAutoPhoneCallTime, 3600) / 60),':', mod(q.effectAutoPhoneCallTime, 60))

mysql数值转字符的函数:

CAST(字段名 AS 要转换的类型)

CONVERT(字段名 , 要转换的类型)



 

mysql的case when  :(可以替代oracle中的decode函数)

Case具有两种格式。简单Case函数和Case搜索函数。

简单Case函数

CASE sex

WHEN ‘1’ THEN ‘男’

WHEN ‘2’ THEN ‘女’

ELSE ‘其他’ END

Case搜索函数

CASE WHEN sex = ‘1’ THEN ‘男’

WHEN sex = ‘2’ THEN ‘女’

ELSE ‘其他’ END

————————————————

mysql将数字转为字符串的方法:1、利用CHAR()函数,语法“SELECT CONVERT(数值,CHAR);”;2、利用“+”运算符,将数字与空字符串相加,语法“SELECT 数值+'';”。

CONVERT(

        (case

        when  t.task_type=11 then  1

        when  t.task_type=12 then  

        when  t.task_type=13 then  3

        when  t.task_type=14 then  4

        ELSE  a.manange_id

        end )  , CHAR)  manange_id ,

rownum=1 转 mysql_给mysql加下 rownum _转

mysql 中关于获取行号@rownum:=@rownum+1 需要进一步了解

mysql中没有获取行号的函数,因此需要通过一些自定义语句来进行获取。通常做法是,通过定义用户变量@rownum来保存表中的数据。通过赋值语句@rownum:=@rownum+1来累加达到递增行号。

例如:select a.* ,@rownum:=@rownum+1 from a,(select @rownum:=0) r; 后半部分语句的select @rownum:=0 相当于创建了r的新表,其表的列为@rownum,数值为0.

1、语法:concat(str1,str2);

显示:str1str2

总结:concat 只能连接两个字符串,|| 可以连接多个

如果多个字符串拼接,建议 "||",因为多个的话要嵌套concat函数,会消耗性能!

mysql中可以concat(str1,str2,str3...);

2、利用cast()函数,语法“cast('字符串' as 数值类型)”;

3、利用convert()函数,语法“convert('字符串', 数值类型)”


 

主建才可设置自增【如果没有设置主键可以使用这个语句】

    1)设置主键,id为表字段

  alter table 表名 add primary key (id);

  如果该字段存在重复的记录需要先删除,才能设置主键

    2)设置自增:id为表字段

  alter table 表名 change id id int not null auto_increment ;


 

当前日期:2017/11/12 10:15:01

1、oracle中add_months()函数

SELECT add_months(SYSDATE,1) from dual; 查询结果 2017/12/12 10:15:18

2、mysql中ADDDATE()函数

SELECT ADDDATE(NOW(), INTERVAL 1 MONTH); 查询结果 2017-12-12 10:15:18



 

可以使用 CREATE VIEW 语句来创建视图。

语法格式如下:

CREATE VIEW <视图名> AS <SELECT语句>


 

书写格式:

Mysql书写格式和Oracle一样,唯一需要注意的一点是,mysql的起始位置只能从1开始,不能从0开始。

示例:

Select  substr( '123456' , 1 , 3) as start1 from dual;

select substr('123456',0,3) as start0 from dual;

总结:mysql中时间函数sysdate() 与now() 函数都是取当前时间返回日期值,有一点区别是now()取的是语句开始执行的时间,sysdate()取的是动态时间

oracle中函数直接SYSdate就行

mysql模拟oracle创建序列号 (切记创建的nextval函数不能回滚,一直步增)

下面是示例跟步骤

1

drop table if exists sequence;

1.1

CREATE TABLE sequence(

 sequence_id varchar(50) NOT NULL COMMENT '序列名称',

  current_val  int(10) not NULL COMMENT '当前值',

  increment_val  int(10)  not NULL   default 1,

  PRIMARY KEY (sequence_id)) ;

2

INSERT INTO  sequence VALUES ('seq_test','273','1');

2.1

create function currval(  SEQ_TB_DATA_ASSISTANT_ORDER VARCHAR(50)) returns integer(11)

begin

     declare value integer;

     set value =273;

     select current_val  into value from sequence  where sequence_id =SEQ_TB_DATA_ASSISTANT_ORDER ;

     return value;

end;

2.2

 select currval ('seq_test');

3

create function nextval(  SEQ_TB_DATA_ASSISTANT_ORDER VARCHAR(50)) returns integer(11)

begin

      update sequence set current_val  = current_val  + increment_val  where sequence_id=SEQ_TB_DATA_ASSISTANT_ORDER ;

  return currval(SEQ_TB_DATA_ASSISTANT_ORDER );

end;

4

select nextval('seq_test');

ROWNUM函数(oracle转mysql使用)

SELECT * from (select ROWNUM s, t.* FROM T_PR_APPLY  t ) b

where b.s BETWEEN 5 and 10  查询第5到第10 的数据

select * from (select (@i:=@i+1) s, t.* FROM T_PR_APPLY  t ,(select @i:=0) as it) r limit 5,5;  第5条后的五条数据

select * from (select (@i:=@i+1) s, TMP_PAGE.* FROM TMP_PAGE  ,(select @i:=0) as it) r limit 0,1;  

INSERT INTO user_log(content,create_time) VALUES(CONCAT('添加的用户信息为:',NEW.user_name,' 性别为:',NEW.sex ),NOW());


 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值