本文主要记录将数据库从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. CSS代码检查工具stylelint

    前面的话 CSS不能算是严格意义的编程语言,但是在前端体系中却不能小觑. CSS 是以描述为主的样式表,如果描述得混乱.没有规则,对于其他开发者一定是一个定时炸弹,特别是有强迫症的人群.CSS 看似简 ...

  2. 爬虫 requests 模块

    requests 模块 介绍 使用requests可以模拟浏览器的请求, 比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) ps: requests库发 ...

  3. 第四十篇-private,public,protected的区别

    1.public: public表明该数据成员.成员函数是对所有用户开放的,所有用户都可以直接进行调用 2.private: private表示私有,私有的意思就是除了class自己之外,任何人都不可 ...

  4. Docker的可视化管理工具对比

    Docker的可视化管理工具有DockerUI.Shipyard.Rancher.Portainer等等,这里主要对这几个进行优劣对比. DockerUI: 优点   (1)支持container批量 ...

  5. (最短路 Floyd) P2910 [USACO08OPEN]寻宝之路Clear And Present Danger 洛谷

    题意翻译 题目描述 农夫约翰正驾驶一条小艇在牛勒比海上航行. 海上有N(1≤N≤100)个岛屿,用1到N编号.约翰从1号小岛出发,最后到达N号小岛. 一张藏宝图上说,如果他的路程上经过的小岛依次出现了 ...

  6. Eclipse之JSP页面的使用

    Eclipse之JSP页面的使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.使用Eclipse创建JSP文件 1>.点击new file,选择jsp File 2&g ...

  7. Mac 终端美化方法

    美化终端,主要是主题,字体,命令行提示3个方面. 主题 使用的主题是Solarized Dark主题. 安装主题: git clone git://github.com/altercation/sol ...

  8. JGUI源码:Accordion鼠标中键滚动和手机端滑动实现(2)

    本文是抽屉组件在PC端滚动鼠标中键.手机端滑动时,滚动数据列表实现方法,没有使用iscroll等第三方插件,支持火狐,谷歌,IE8+等浏览器. 演示在:www.jgui.com Github地址:ht ...

  9. 关于并查集的路径压缩(Path Compress)优化

    之前在CSDN看到一篇很受欢迎的讲解并查集的博文,其中自然用到了路径压缩: int pre[1000]; int find(int x){ int root = x; while(pre[root]! ...

  10. 分别基于TensorFlow、PyTorch、Keras的深度学习动手练习项目

    ×下面资源个人全都跑了一遍,不会出现仅是字符而无法运行的状况,运行环境: Geoffrey Hinton在多次访谈中讲到深度学习研究人员不要仅仅只停留在理论上,要多编程.个人在学习中也体会到单单的看理 ...