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'

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 将SQL Server中的数据迁移MySQL可以通过以下步骤实现: 1. 将SQL Server中的数据导出为CSV或Excel格式的文件。 2. 在MySQL中创建相应的表结构。 3. 将导出的数据文件导入到MySQL中。 4. 验证数据是否正确导入。 需要注意的是,在进行数据迁移时,需要考虑数据类型、字符集等因素,以确保数据的完整性和准确性。同时,还需要注意SQL Server和MySQL之间的差异,例如SQL语法、函数等方面的差异,以避免出现错误。 ### 回答2: 数据迁移是当企业需要更换或升级数据库时,经常遇到的问题。对于企业来说,有时需要把 SQL Server 数据库移到 MySQL 数据库中。下面我将从数据结构比较、迁移工具选择和迁移前后注意事项三个方面详细介绍 SQL Server 数据迁移MySQL 的具体步骤及注意点。 1. 数据结构比较 在进行数据迁移之前,我们需要先对 SQL Server 和 MySQL 数据库的数据结构进行比较,以确定目标 MySQL 数据库是否可以容纳 SQL Server 数据库中的全部数据。SQL Server 和 MySQL 之间的区别很大,尤其是在数据类型和枚举上。因此在迁移之前,需要先确定 SQL Server 数据库中所使用的数据类型是否与 MySQL 数据库兼容。 2. 迁移工具选择 与选择其他的数据库迁移工具相比,选择可靠的工具可以简化数据库迁移过程。例如,如果你想将 SQL Server 数据库迁移MySQL,可以使用 MySQL Workbench 数据库迁移工具。这个工具可以将 SQL Server 数据库移为 MySQL 脚本,从而帮助您完成数据迁移的过程。而且,这个工具是免费的,并且易于使用。 3. 迁移前后注意事项 在 SQL Server 数据迁移MySQL 之前,您需要做好以下准备工作: ● 创建与 SQL Server 数据库相应的 MySQL 数据库,并在 MySQL 数据库中创建表。 ● 将 SQL Server 数据库中数据换为 MySQL 数据库中的数据类型,并将数据存储在临时数据文件中。 ● 在移之前,检查所有 SQL Server 数据库的约束和约束规则是否在 MySQL 数据库中得到满足。 在迁移期间,您需要注意以下几点: ● 在迁移过程中,要保证源数据库 SQL Server 的一致性和完整性。 ● 在导入数据之前,确保在 MySQL 数据库中创建了相应的表,并设置正确的列属性。 ● 在进行数据导入时,将导入的数据逐步验证,以确保数据的一致性和准确性。 ● 在迁移完成后,请进行数据验证,确保 MySQL 数据库中的数据与 SQL Server 数据库中的数据没有发生变化,数据完整性得到保证。 综上所述,SQL Server 数据迁移MySQL 的过程需要经过细致的计划和操作,需要注意数据结构比较、迁移工具选择和迁移前后注意事项三个方面的问题,才能顺利完成数据迁移的任务。 ### 回答3: 对于将SQL Server数据迁移MySQL的过程,需要考虑以下几个方面。 1. 数据结构换:SQL Server和MySQL的数据类型存在一定的区别,因此在进行数据迁移之前需要对数据类型进行换。例如,SQL Server的datetime类型在MySQL中可以换为timestamp类型。此外,还需要注意区分SQL Server的nvarchar类型和MySQL的varchar类型。 2. 数据迁移方法:数据迁移可以通过手动方法进行,即逐个表进行换和导入,也可以通过数据库迁移工具来进行。如果是手动方法,则需要先将SQL Server的数据换为MySQL能够识别的格式,然后将数据导入到MySQL中。如果使用数据库迁移工具,则可以自动完成数据结构换和数据导入。 3. 数据安全性:在进行数据迁移过程中需要注意数据的安全性,包括数据完整性和数据准确性。在进行数据结构换和数据导入之前,需要对数据进行备份和验证,以确保数据迁移后没有数据损失和数据错误。 4. 数据库配置:迁移完成后,需要对MySQL的数据库配置进行相应的更改,以使其与SQL Server的配置相同。这包括字符集、存储引擎等配置。 除了以上几个方面,还需要考虑数据迁移的时间和资源消耗。对于较大的数据库迁移,可能需要在非工作时间进行,以避免对业务造成影响。此外,还需要考虑服务器资源和网络带宽的使用情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值