本文主要记录将数据库从SqlServer移植到MySql的过程中,发现的各种坑爹问题。以SqlServer为主,记录MySql的差异性。

一.IF语句

  首先MySql中的的IF语法不同。

IF  Condition THEN
-- todo
ELSE IF Condition THEN
-- todo
ELSE
-- todo
END IF;

  其次,MySql中的IF语句,只能在存储过程或函数中执行,不能直接在查询中执行。(坑爹!!!

二.变量与参数名称

  1.存储过程中传入的参数必须要和查询的表中的字段不一样,否则会导致查询错误。

  比如传入一个命名为userid的参数,在存储过程中查询:

select * from user where userid = userid

  查询的结果是将所有的user都给查询出来,而不是查询出指定的user。原因是条件语句:userid = userid ,mysql无法区分哪个是字段哪个是条件。

  2.存储过程中变量名称同样不能和查询的表中的字段一样,原因同上。(坑爹!!!!

三.SELECT子查询

  在select子查询时,子查询语句中join关联时,不能用直接使用父表字段。

select (
SELECT COUNT(y.ID)
FROM y
INNER JOIN e ON e.AId = y.Id and e.Code =a.Code
) as carcount
from a;

  上述语句无法执行成功,原因在于红色标红的条件。

  必须将关联父表的条件写在Where语句中,如下:

select (
SELECT COUNT(y.ID)
FROM y
INNER JOIN e ON e.AId = y.Id
where e.Code =a.Code
) as carcount
from a;

  

四.存储过程参数中文乱码

  在使用存储过程中发现,如果存储过程的参数包含有中文,传到数据库时会变成乱码。

  首先在数据库方面保证编码一致性。

    1.数据库编码为UTF8

    2.存储过程参数后面需设定编码格式:如 carnump VARCHAR(100) character set utf8

      3.表字段的编码格式也需设定为UTF8

  其次,在使用C#驱动调用存储过程的时候,数据库链接中需要明确编码格式,否则默认编码为:GB123  

 <add key="sqlConnectionString" value="Server=127.0.0.0.1;Port=3306;Charset=utf8;Uid=root;Pwd=123456;DataBase=TestDB"/>

  

    

  

  

【SQL】 MySql与SqlServer差异比较(MySql踩坑全集)的更多相关文章

  1. MySQL 5.7版本安装教程-踩坑总结

    下载 MySQL下载地址 选择下载64位(看自己电脑是32位还是64位) 点击下载之后,它会让你登录,没有Oracle账户,跟着它的步骤注册一个就好了. 安装 打开下载好的压缩包解压到你的某一目录下, ...

  2. MySQL Connector/NET 使用小结(踩坑之路)

    背景描述 根据项目的需要,需连接MySQL获取数据. 首先,先了解一下项目的情况: 之前的代码是C#编写的的, 运行时:.NETFramework3.5. 由于项目已经部署上线,因此不能升级运行时,这 ...

  3. Mysql数据类型TINYINT(1)与BOOLEAN踩坑记

    熟悉Mysql的同学应该都知道,Mysql查询的boolean结果将输出为0或者1. 比如: ; 其输出结果为1. 查阅mysql官方文档仅找到如下描述: 11.10 Using Data Types ...

  4. Dapper+Mysql 使用LIKE模糊查询写法踩坑

    LIKE '%@Title%' 会解析成'%'@Title'%' 这里用拼接也是不行的'%'+@Title+'%' 只能用MySQL函数方法拼接 public dynamic GetListByFil ...

  5. MySQL基本语法(一):和SQL Server语法的差异小归纳

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  6. ABP框架入门踩坑-使用MySQL

    使用MySQL ABP踩坑记录-目录 起因 因为我自用的服务器只是腾讯云1核1G的学生机,不方便装SQL Server,所以转而MySQL. 这里使用的MySQL版本号为 8.0. 解决方案 删除Qi ...

  7. MySQL与SQLServer的区别(一千条语句)

    ER图.分页.差异.Java连接MySQL SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 ...

  8. Spark踩坑记——数据库(Hbase+Mysql)

    [TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...

  9. jdbc连接数据库(mysql,sqlserver,oracle)

    package com.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepare ...

随机推荐

  1. poj-2516(最小费用流)

    题意:有n个商店,每个商店有k种货物,每个货物需要a[n][k]个,有m个仓库,每个仓库也有k种货物,每个货物有b[m][k]个,然后k个矩阵,每个矩阵都是n*m的,第i行第j列表示从仓库j到商店i每 ...

  2. [模板] 杜教筛 && bzoj3944-Sum

    杜教筛 浅谈一类积性函数的前缀和 - skywalkert's space - CSDN博客 杜教筛可以在\(O(n^{\frac 23})\)的时间复杂度内利用卷积求出一些积性函数的前缀和. 算法 ...

  3. 网络基础之HTTP、TCP/IP、Socket

    一.HTTP相关 https://www.cnblogs.com/sunny-sl/p/6529830.html https://www.cnblogs.com/ranyonsue/p/5984001 ...

  4. GitHub最基本使用总结

    GitHub最基本使用入门 入门必看博客:https://mp.weixin.qq.com/s/LbzSwl4dYwrSPze0w10l8w 一.Git Linux安装 Git Linux安装教程:h ...

  5. phpStudy The requested URL /web/index.php was not found on this server

    1.原因 phpStudy的httpd-conf 与 vhosts-ini 的目录设置错了 2.解决 分别打开httpd-conf 与 vhosts-ini 2个文件,搜索WWW,把里面的路径改成你的 ...

  6. 用python 发 帝国cms 文章

    在e\extent下面放一个jiekou.php     #!/usr/bin/env python3 # -*- coding: utf-8 -*- import time import urlli ...

  7. openstack——删除网络

    #!/bin/bash #delete vm for vim in `nova list |awk '{if( NR > 2 ) {print $2}}'`;do nova delete $vi ...

  8. H5与APP混合开发相关知识点总结

    整理一: 现在有这么个需求,如下图 app端点击右上角的 加 号 ,弹出模态框 这个项目是基于vue写的,客户端需要调用H5页面里定义的js方法,但是在vue里,所有的方法都是在组件内部声明的,也只能 ...

  9. 【dfs】P1433 吃奶酪

    题目描述 房间里放着n块奶酪.一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处. 输入输出格式 输入格式: 第一行一个数n (n<=15) 接下来每行2个实数,表示第i块 ...

  10. BZOJ 1491: [NOI2007]社交网络(Floyd+暴力乱搞)

    题面: https://www.lydsy.com/JudgeOnline/problem.php?id=1491 题解: 先看数据范围,n<=100..欸可以乱搞了 首先因为小学学过的乘法原理 ...