【SQL】 MySql与SqlServer差异比较(MySql踩坑全集)
本文主要记录将数据库从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踩坑全集)的更多相关文章
- MySQL 5.7版本安装教程-踩坑总结
下载 MySQL下载地址 选择下载64位(看自己电脑是32位还是64位) 点击下载之后,它会让你登录,没有Oracle账户,跟着它的步骤注册一个就好了. 安装 打开下载好的压缩包解压到你的某一目录下, ...
- MySQL Connector/NET 使用小结(踩坑之路)
背景描述 根据项目的需要,需连接MySQL获取数据. 首先,先了解一下项目的情况: 之前的代码是C#编写的的, 运行时:.NETFramework3.5. 由于项目已经部署上线,因此不能升级运行时,这 ...
- Mysql数据类型TINYINT(1)与BOOLEAN踩坑记
熟悉Mysql的同学应该都知道,Mysql查询的boolean结果将输出为0或者1. 比如: ; 其输出结果为1. 查阅mysql官方文档仅找到如下描述: 11.10 Using Data Types ...
- Dapper+Mysql 使用LIKE模糊查询写法踩坑
LIKE '%@Title%' 会解析成'%'@Title'%' 这里用拼接也是不行的'%'+@Title+'%' 只能用MySQL函数方法拼接 public dynamic GetListByFil ...
- MySQL基本语法(一):和SQL Server语法的差异小归纳
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- ABP框架入门踩坑-使用MySQL
使用MySQL ABP踩坑记录-目录 起因 因为我自用的服务器只是腾讯云1核1G的学生机,不方便装SQL Server,所以转而MySQL. 这里使用的MySQL版本号为 8.0. 解决方案 删除Qi ...
- MySQL与SQLServer的区别(一千条语句)
ER图.分页.差异.Java连接MySQL SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 ...
- Spark踩坑记——数据库(Hbase+Mysql)
[TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...
- jdbc连接数据库(mysql,sqlserver,oracle)
package com.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepare ...
随机推荐
- 金融量化之Tushare模块
一.介绍 Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分析人员提供快速.整洁.和多样的便于分析的数据,为他们 ...
- python发送smtp 邮件 图片
#-*- coding: utf-8 -*- # python2 import os import time import random import smtplib from time import ...
- tomcat logs目录下 日志文件含义及配置位置
含义:Web服务器访问日志配置位置:server.xml 含义:tomcat的标准输出(stdout)和标准出错(stderr),应用里使用System.out打印的东西都会到这里来,日志框架,配置了 ...
- OpenLayers学习笔记(九)— 限制地图显示范围
openlayers 3 地图上限制地图显示及拖动范围,坐标系是4326转3857,中心经纬度精确到小数点后六位,减少误差 GitHub:八至 作者:狐狸家的鱼 本文链接:ol3-限制地图显示及拖动范 ...
- JS学习笔记Day16
一.匀速运动 保证速度不让用户提供,将速度写到函数中 speed = target-obj.offsetLeft>0 ? 正速度 :负速度 二.缓冲运动 var speed=(target-ob ...
- C++: sprintf浮点数精度控制;
错误的写法: char buf[100]; int num = 10; sprintf(buf, "%.2f", num); ///这种做法是不对的, 按照压栈顺序, 在压入num ...
- 02 Redis关闭服务报错---(error) ERR Errors trying to SHUTDOWN. Check logs.
127.0.0.1:6379> shutdown (error) ERR Errors trying to SHUTDOWN. Check logs. 1.在redis.conf中修改日志文件的 ...
- Scrapy 入门
Scrapy https://docs.scrapy.org/en/latest/intro/overview.html Scrapy is an application framework for ...
- tcp协议的简单理解
tpc协议属于传输层协议,本篇主要介绍下几个概念,以及握手和挥手的过程. 1.tcp的几个概念 位码:即tcp标志位,有6种提示 SYN:synchronus,表示建立联机. ACK:acknowle ...
- django登录
一. form表单使用注意事项: 1. action="" 提交地址, method='post' 请求方式 2. input 标签要有name属性才能被获取 3. 有一个inpu ...