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,感觉还行,但是今天采 ...
随机推荐
- 自定义 Swiper 的上一页,下一页按钮
1. Swiper 的上一页,下一页按钮,不是必需包含在container 中的 2. 定义上一页,下一页按钮的样式,CSS略.... 3. 在初始化Swiper中,定义上一页,下一页按钮
- ICSharpCode.SharpZipLib.Zip 压缩文件
public class ZipFileHelper { List<string> urls = new List<string>(); void Director(strin ...
- jquery delegate()方法 语法
jquery delegate()方法 语法 作用:delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数.使用 delegate( ...
- react 的className动态修改
https://blog.csdn.net/suwyer/article/details/81481507(copy) <div style={{display: (index===this.s ...
- AcWing 107. 超快速排序(归并排序 + 逆序对 or 树状数组)
在这个问题中,您必须分析特定的排序算法----超快速排序. 该算法通过交换两个相邻的序列元素来处理n个不同整数的序列,直到序列按升序排序. 对于输入序列9 1 0 5 4,超快速排序生成输出0 1 4 ...
- 对象转JSON字符串与json字符串转对象方法
JSON.stringify()[从一个对象中解析出字符串] JSON.parse()[从一个json字符串中解析出对象] var data = {"nums": 1, " ...
- Android_(游戏)打飞机04:绘画敌机、添加子弹
(游戏)打飞机01:前言 传送门 (游戏)打飞机02:游戏背景滚动 传送门 (游戏)打飞机03:控制玩家飞机 传送门 (游戏)打飞机04:绘画敌机.添加子弹 传送门 (游戏)打飞机05:处理子弹, ...
- 官网Windows 10安装程序驱动下载--截止:2019.01.06版本
说明:鉴于win7,8不可直接再下载原装iOS文件,这份共享程序包是为以后N年做的准备.如果N年后这个包还可以用,就可以省去很多麻烦. 百度网盘分享:https://pan.baidu.com/s/1 ...
- scala实战学习-快速排序
def qSort(a:List[Int]):List[Int]={ if(a.length < 2) a else qSort(a.filter(a.head > _)) ++ a.fi ...
- maven国内镜像、国内外仓库(直接下载jar)
阿里: https://maven.aliyun.com/mvn/search 官方: http://repo.maven.apache.org/maven2/ maven仓库 阿里巴巴的镜像仓库, ...