sqlserver迁移mysql语法修改
1.top 100 选取表中前100条
改为 limit #{limit},limit 为变量
2.获取当前日期getdate()
改为now()
3.id=#{id,jdbcType=BIGINT}
改为id=#{id},不需要指定数据类型
4.sqlserver查询需要nolock
而mysql不需要
5.字符串拼接
sqlserver:select * from A where contract_no like '%'+'DSP'+'%' order by id desc
mysql:select * from A where contract_no like concat('%','DSP','%') order by id desc
单向拼接用
concat('_%',#{waybillNo})
concat('%',#{waybillNo},'%')
6.分页查询时
mysql不支持ROW_NUMBER() OVER,也不支持with cte1 as()语法
sqlserver:
<select id="getB" resultMap="BaseResultMap" parameterType="java.util.Map" >
with cte1 as
(
select
<include refid="Base_Column_List_T" />,t2.parta_no,t2.parta_name,t1.parta_num
from a(nolock) t1, b(nolock) t2 where t1.id=t2.contract_info_id
<include refid="Get_Where_Clause_Page" />
and t2.id in(select min(id) from c(nolock)
<where>
<if test="parta_name != null">
AND parta_name like '%'+#{parta_name, jdbcType=VARCHAR}+'%'
</if>
<if test="parta_no != null">
AND parta_no = #{parta_no, jdbcType=VARCHAR}
</if>
</where>
group by contract_info_id )
) ,
cte2 as(
select ROW_NUMBER() OVER (ORDER BY cte1.id desc) as RowNumber,<include refid="Base_Column_List" />,parta_no,parta_name,parta_num from
cte1
)
select <include refid="Base_Column_List" />,parta_no,parta_name,parta_num
from
cte2 where RowNumber between #{startRow} and #{endRow}
order by cte2.id desc
</select>
mysql:
<!-- 合同分页查询 -->
<select id="getB" resultMap="BaseResultMap" parameterType="java.util.Map" >
select
<include refid="Base_Column_List_T" />,t2.parta_no,t2.parta_name,t1.parta_num
from a t1, b t2 where t1.id=t2.contract_info_id
<include refid="Get_Where_Clause_Page" />
and t2.id in(select min(id) from c
<where>
<if test="parta_name != null">
AND parta_name like CONCAT(CONCAT('%', #{parta_name, jdbcType=VARCHAR}), '%')
</if>
<if test="parta_no != null">
AND parta_no = #{parta_no, jdbcType=VARCHAR}
</if>
</where>
group by contract_info_id )
order by t1.id desc
limit #{startRow},#{pageSize}
</select>
7.分页查询时注意 limit #{startRow},#{pageSize}取得startRow必须从0开始,可能在controller层要改变下起始页码,取决于引用的分页法,也要注意查询总数为0时,0-1=-1,起始页面不可以为-1,要区分对待。
8.sqlserver isnull(t1.parta_num,0)转化为mysql ifnull(t1.parta_num,0)
MySQL IFNULL函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL,则返回第一个参数。 否则,IFNULL函数返回第二个参数。
两个参数可以是文字值或表达式。
以下说明了IFNULL函数的语法:
IFNULL(expression_1,expression_2);
SQL
如果expression_1不为NULL,则IFNULL函数返回expression_1; 否则返回expression_2的结果。
IFNULL函数根据使用的上下文返回字符串或数字。
如果要返回基于TRUE或FALSE条件的值,而不是NULL,则应使用IF函数。
9.int 类型 sqlserver默认为0,而mysql默认为null。
10.多表关联update区别
sqlserver:
update a set a.invoice_apply_amount=a.invoice_apply_amount+b.invoicing_amount,a.uninvoiced_balance =a.uninvoiced_balance+b.invoicing_amount,a.invoiced_amount=a.invoiced_amount-b.invoicing_amount from A a,B b where a.contract_no =b.contract_no and b.apply_no='11111'
mysql:
UPDATE A a,B b
SET a.invoice_apply_amount=a.invoice_apply_amount+b.invoicing_amount,a.uninvoiced_balance =a.uninvoiced_balance+b.invoicing_amount,a.invoiced_amount=a.invoiced_amount-b.invoicing_amount
WHERE a.contract_no =b.contract_no and b.apply_no='11111'
sqlserver迁移mysql语法修改的更多相关文章
- SqlServer与MySql语法比较
1.复制表(包括表结构.表数据) SqlServer: Select * into user_copy from user MySql: CREATE TABLE user_copy LIKE use ...
- 高可用数据同步方案-SqlServer迁移Mysql实战
简介 随着业务量的上升,以前的架构已经不满足业务的发展,数据作为业务中最重要的一环,需要有更好的架构作为支撑.目前我司有sql server转mysql的需求,所以结合当前业务,我挑选了阿里云开源的一 ...
- .NET程序迁移到Mysql的极简方案——让GGTalk同时支持Sqlserver与mysql全程记录!
园子里的这个GGTalk,咱们前前后后用它移花接木做的IM项目也不下三四个了.初次入手的时候,洋洋代码,多少感觉有些难以把握.不过一来二去,理清了头绪,也就一览无余了.相信跟我们一样想要利用GGTal ...
- 各种主流 SQLServer 迁移到 MySQL 工具对比
我之所以会写这篇对比文章,是因为公司新产品研发真实经历过这个痛苦过程(传统基于SQL Server开发的C/S产品转为MySQL云产品).首次需要数据转换是测试环节,当时为了快速验证新研发 ...
- [工具] 各种主流 SQLServer 迁移到 MySQL 工具对比
我之所以会写这篇对比文章,是因为公司新产品研发真实经历过这个痛苦过程(传统基于SQL Server开发的C/S产品转为MySQL云产品). 首次需要数据转换是测试环节,当时为了快速验证新研发云产品性能 ...
- 【数据库】各种主流 SQLServer 迁移到 MySQL 工具对比
在部署前期,首要任务就是考虑如何快速把基于 SQL Server 数据库的应用程序移植到阿里云的 MySQL 数据库.由于程序是基于 O/R mapping 编写,并且数据库中没有使用存储过程.用户函 ...
- 在项目中迁移MS SQLServer到Mysql数据库,实现MySQL数据库的快速整合
在开发项目的时候,往往碰到的不同的需求情况,兼容不同类型的数据库是我们项目以不变应万变的举措之一,在底层能够兼容多种数据库会使得我们开发不同类型的项目得心应手,如果配合快速的框架支持,那更是锦上添花的 ...
- MVC4,MVC3,VS2012+ entity framework Migration from Sqlserver to Mysql
在开发的初期个人认为因VS与Sqlserver的配合很默契,即可以方便的实现Code First,又可以使用SqlServer Manager很漂亮的进行建模与变更,也许是个人的使用习惯MS的界面做的 ...
- Sqlserver与Mysql触发器之间的差别
今天练习sqlserver,一开始感觉应该像Oracle,Mysql语法差不多,但是经过一下午的奋战,才感觉原来这三个数据库就是有区别啊, 我原来学习触发器的时候用的是Mysql,感觉还行,但是今天采 ...
随机推荐
- C# checkedlistbox 控件 有bug
加入集合 private void Form2_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Column ...
- layer 相关网址
layer 1.8.5 官方网址: http://layer.layui.com/1.8.5/ API网址: http://layer.layui.com/1.8.5/api.html
- ELEMENT-UI 封装el-table 局部刷新row
//关于封装的el-table行数据更新后如何局部更新row row.status=status; this.$set(this.$refs.elTable.$data.tableData,index ...
- MCMC & 贝叶斯
用MCMC做参数估计
- 个推CTO深度解析数据智能之多维度分析系统的选型方法
引言 前文回顾:[<数据智能时代来临:本质及技术体系要求>][2]作为本系列的第一篇文章,概括性地阐述了对于数据智能的理解以及推出了对应的核心技术体系要求: 数据智能就是以数据作为生产资料 ...
- C++入门经典-例5.11-动态分配空间,堆与栈
1:在程序中定义一个变量,它的值会被放入内存中.如果没有申请动态分配,它的值将会被放在栈中.栈中的变量所属的内存大小是无法被改变的,它们的产生与消亡也与变量定义的位置和存储方式有关.堆是一种与栈相对应 ...
- hdjs---后盾网requireJS课程
hdjs---后盾网requireJS课程 一.总结 一句话总结: requireJS是js端模块化开发,主要是实现js的异步加载,和管理模块之间的依赖关系,便于代码的编写和维 1.requireJS ...
- Oracle数据表之间的数据同步
保证两个数据表结构相同,如不相同只能同步相同字段; 只是思路,具体请根据需求修改. declare cursor csrn_mon is select * from table2; row_mon c ...
- 一起学vue指令之v-pre
一起学vue指令之v-pre 一起学 vue指令 v-pre 指令可看作标签属性 浏览器解析引擎遇到vue的插值符号时会自动解析,当你想输出不被解析的纯文本时,可以使用v-pre指令. 未使用v-p ...
- Php mysql 常用代码、CURD操作以及简单查询
C/S:Client ServerB/S:Brower Server php主要实现B/S LAMP :Linux系统 A阿帕奇服务器 Mysql数据库 Php语言 mysql常用代码 ...