- 浏览: 778524 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (256)
- ssh (18)
- webservice (8)
- java基础 (38)
- j2EE方方面面 (17)
- 随意涂鸭!呵呵 (2)
- 数据库 (22)
- work (10)
- XML与XML解析 (9)
- 测试 (2)
- sso (1)
- ldap (6)
- java 模板技术 (4)
- 版本管理 (1)
- 每日小点滴 (26)
- javascript (26)
- Jakarta Commons (2)
- css (6)
- 设计 (3)
- Eclipse插件开发 (3)
- BAP (3)
- web控件 (2)
- java加密解密 (4)
- 调优 (6)
- 界面技术 (3)
- java多线程 (6)
- 互联网 (2)
- 日志管理 (4)
- java调度 (3)
- rest (0)
- Python (2)
- mobile (2)
- 2016的故事 (4)
- Docker (1)
- NOSQL_Hadoop (0)
最新评论
-
promiseloney:
这个女程序员厉害了。。。
JVM调优:GC 参数 -
zxjlwt:
可以通过WebService上传一个文件吗?素人派http:/ ...
webservice传送XML大小估算 -
liaoshaoyang:
写的不错嘛 可以做参考
权限管理设计一 -
aaaaaaaaabaas:
谢谢,对我有帮助
Apache Commons Configuration使用入门 -
Jack_Wilshere:
com.smartdot.pdm.business.corp. ...
java导出txt
这两天要把一个系统从oracle上移植到mysql上,顺便简单整理一下两者语法的不同
-
decode
mysql中没有decode,可以使用case when语句代替,oracle也支持case when语句,看来以后为了移植方便还是使用case when比较好。
select NAME, case name when 'sam' then 'yong' when 'lee' then 'handsome' else 'good' end from lee;
下面是同一条sql,decode与case when比较:
sum(decode(sign(similarity-${param1})+sign(similarity-${param2}),0,1,-1,1,0)) as sus_tort_count sum(case sign(similarity-${param1})+sign(similarity-${param2}) when 0 then 1 when -1 then 1 else 0 End
2.分页代码:
oracle中分页代码使用rownum,具体参见:http://qingfeng825.iteye.com/blog/779462
----oracle排序写法 SELECT * FROM ( SELECT list.*, rownum as RNUM FROM ( SELECT * FROM CIP_Test_User ORDER BY ID desc ) list WHERE ROWNUM < 11 ) WHERE RNUM >=1
1和11都代表行号
mysql分页使用limit
----mysql排序写法 SELECT * FROM CIP_Test_User ORDER BY ID desc limit 1,10
1代表偏移量,10代表要取出来的记录个数
3.数字转字符串
mysql: concat(site_id,'')
oracle:to_char(site_id)
4.取当前日期(mysql 要加括号)
mysql:now(),sysdate() 具体参见:http://blog.sina.com.cn/s/blog_6d39dc6f0100m7eo.html
oracle:sysdate
5.触发器的不同,下面是两个相同功能的触发器
CREATE TRIGGER `IMS_EVIDENCE_UPDATE_TRIGGER` BEFORE UPDATE ON `bas_page_evidence` FOR EACH ROW BEGIN if ((NEW.WEB_IMAGE IS NOT NULL AND OLD.WEB_IMAGE IS NULL) OR(NEW.WEB_URL_IMAGE IS NOT NULL AND OLD.WEB_URL_IMAGE IS NULL) OR(NEW.HTML_SNAP IS NOT NULL AND OLD.HTML_SNAP IS NULL)) then set new.Evidence_Done_Count=new.Evidence_Done_Count+1; if(new.EVIDENCE_DONE_COUNT>=new.EVIDENCE_COUNT) then set new.Evidence_date=sysdate(); if(new.EVIDENCE_STATUS!='4' and old.EVIDENCE_STATUS!='4') then set new.Evidence_status = '3'; end if; update bas_monitor_result set status='5' where status='4' and url_Id=new.url_id; end if; end if; END;
(mysql版本)
CREATE OR REPLACE TRIGGER IMS_EVIDENCE_UPDATE_TRIGGER before UPDATE OF Web_image,Web_url_image,Html_snap ON ims_page_evidence REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW WHEN ((new.Web_image is not null and old.Web_image is null) or(new.Web_url_image is not null and old.Web_url_image is null) or(new.Html_snap is not null and old.Html_snap is null)) BEGIN :new.Evidence_Done_Count := :old.Evidence_Done_Count+1; if :old.Evidence_Done_Count+1 >= :old.Evidence_Count then :new.Evidence_date := sysdate; if :old.Evidence_status !='4' and :new.Evidence_status !='4' then :new.Evidence_status := '3'; end if; --更新result update ims_monitor_result set status='5' where status='4' and url_Id=:new.url_id; end if; END;
(oracle版本)
几点不同: mysql没有replace trigger, 要修改一个trigger只能是drop trigger后重新建;
oracle在before update 与 on 表名之间可以加入 of 列名1,列名2,列表3,表示当前trigger只对这几列有用,在mysql中没有找到这种写法。
oracle中用到new old都要加: ,mysql不用。
发表评论
-
SQL面试题二
2013-09-03 22:39 1609一道SQL语句面试题,关于group by 表内容: 2 ... -
面试SQL语句
2013-09-03 22:22 11341Get the average salary of e ... -
数据库事务转载基础二:MySQL事务隔离级别详解
2012-06-19 13:01 902SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定 ... -
数据库事务转载基础二:oracle事务隔离级别
2012-06-19 12:57 907Oracle 支持的 2 种事务隔离级别 Read commi ... -
数据库事务转载基础一:oarcle事务
2012-06-19 12:48 1057Oracle事务 2010-11-29 14:22 ... -
数据库实现列值合并为行
2011-10-21 14:17 1204转载自:http://hi.baidu.com/wangz ... -
oracle中使用sys_connect_by_path进行表中行值连接
2011-03-01 12:52 12029一、最原始的表说明 CREATE TABLE DATADIC ... -
oracle rownum 学习
2010-10-09 13:37 2863----oracle排序写法 SELECT * FROM ( ... -
oracle 10 TNSLSNR.EXE 占用了8080端口怎么办
2010-02-20 17:51 3944oracle 10服务一启动 TNSLSNR.exe 会占用8 ... -
解决ora-280000 the account is locked
2010-02-20 16:35 4314测试、运行程序时,一般使用服务器上的oracle服务,2010 ... -
oracle 中的几天后,几年后
2009-08-21 15:52 1793首先,需要记住Oracle里面的日期加减是按照天来计算的 ... -
ob 接oracle10时接不上怎么办?
2009-05-04 16:36 12971、打开BDE Administrator。 ... -
Union使用
2009-02-11 14:55 1140select subjectRecordNo as ... -
oracle中判断一个串中是否包含另一个串
2008-12-31 14:32 2778select decode(INSTR('CORPORATEa ... -
sum结果为null时,如果返回值是int型报错
2008-12-01 16:44 2011select nvl(sum(decode(sta ... -
oracle结构设计
2008-11-10 15:21 1273尽管Oracle系统本身已 ... -
Oracle的rownum原理和使用
2008-11-07 11:20 1277俺程序中用到的rownum分页+排序的实现(有机会仔细研究) ... -
oracle10数据库导入导出问题
2008-07-01 15:02 1742ob7.0 不支持oracle10的导入,只可以导出。 toa ... -
oracle中用START WITH...CONNECT BY PRIOR子句实现递归查询
2008-05-26 15:39 10230今天发现在oracle中的select语句可以用START W ... -
Oracle Discover产品简介
2008-03-03 10:50 4236Oracle Discoverer?是Oracle公司面向De ...
相关推荐
本文将详细介绍如何在MySQL中模拟Oracle的`DECODE`函数,并探讨不同数据库系统中的查询差异。 首先,Oracle的`DECODE`函数可以理解为一个简单的条件判断表达式,它允许我们在一个查询中根据指定的条件返回不同的列...
在 MySql 中,创建函数的语法与 Oracle 不同。MySql 使用 DELIMITER 语句来标记函数的开始和结束,而 Oracle 使用 CREATE FUNCTION 语句。在 MySql 中,同时还需要指定函数的定义者和字符集。 2. 变量声明 在 ...
DECODE函数提供了一种简洁的语法,使得在SQL查询中可以根据不同的条件返回不同的值,而无需使用复杂的CASE语句或者IF-THEN-ELSE逻辑。 DECODE函数的基本语法如下: ```sql DECODE(expression, value1, result1, ...
7. **使用DECODE或CASE语句**:在某些情况下,通过减少计算,这些语句可以帮助优化JOIN操作。 理解JOIN的语法和性能优化技巧对于编写高效的SQL查询至关重要。在设计数据库和编写查询时,应始终考虑性能,尤其是在...
另外,PHP与MySQL数据库的整合是其强项之一。使用`mysqli`或`PDO`扩展,我们可以连接到数据库,执行查询,并处理结果集。例如,连接到数据库的代码可能如下: ```php $servername = "localhost"; $username = ...
3. DECODE 和 CASE WHEN:Oracle 的 DECODE 函数在条件判断中提供简洁的语法,但在 MySQL 中,你需要使用 CASE WHEN THEN END 结构来实现相同功能。 4. TO_DATE 和 STR_TO_DATE:Oracle 的 TO_DATE 函数将字符串...
在数据库查询和编程中,`Decode` 运算符是一种非常实用的工具,它用于根据指定的条件返回不同的值。这个运算符在某些数据库系统,如Oracle和SQL Server中广泛使用,尤其在处理条件判断和简化查询逻辑时。在本教程中...
10. **数据库交互**: PHP可以与多种数据库进行交互,如MySQL通过`mysqli`或`PDO`扩展。例如: ```php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // 创建连接...
`DECODE`的基本语法如下: ```sql DECODE(expression, value1, result1, value2, result2, ..., default_result) ``` 这里的`expression`是要检查的值,`value1`、`value2`等是你希望匹配的值,`result1`、`result...
在Oracle中,DECODE函数可以用来处理分母为0的情况,但在MySQL中没有直接的DECODE函数。不过,我们可以使用CASE WHEN语句来实现相同功能。 例如,要计算"数学/英语"的比例,但避免除以0的错误,可以这样写: ```...
- `DECODE`函数:Oracle的`DECODE`在MySQL中可以用`CASE WHEN`语句替代。 - 序列化函数:Oracle的`ROW_NUMBER() OVER(PARTITION BY ... ORDER BY ...)`在MySQL中需使用用户变量模拟,如示例所示。 - 行号`ROWNUM`...
Oracle到MySQL转换的过程中,会遇到一系列与数据类型、SQL语法和函数使用相关的问题。以下是这些关键点的详细解释: 1. **数据类型的区别**: - Oracle中的`NUMBER(10,0)`等同于MySQL中的`INT`,而`NUMBER(10,2)`...
Access 的转换方法与 SQL Server 的 `Convert` 或 `Cast` 不同,Oracle 使用 `To_Char` 和 `To_Number`。使用 `GetConvertStr` 可以实现转换。 9. **日期字符串格式**: Access 的日期格式如 `'2004-10-9'` 和 `#...
- `DECODE`函数:Oracle中的`DECODE`在MySQL中可以用`CASE WHEN`表达式替换。 - 分区窗口函数:Oracle的`ROW_NUMBER() OVER(PARTITION BY ... ORDER BY ...)`在MySQL中需通过用户变量实现,如示例所示。 6. 其他...