SqlServer=>MySql
原文:http://www.cnblogs.com/andrew-blog/archive/2011/12/03/SQL_mss2sql.html#3242272
工具:https://files.cnblogs.com/files/newsea/mss2sql.rar
能把表,数据导过去。MySql挺狠的。
视图,函数,存储过程,导不过去。
另外,MySql不支持匿名块,批量操作,声明变量,只能写到存储过程或函数。
MsSql => MySql
1. 去除[dbo]. 去除 空格dbo.
2. [] =》 ``
3. 去除@, MySql定义变量不用@, 但是可以不定义变量直接使用@变量
4. if 格式更拘束, end if 后面必须加;
5. 自定义函数或自定义存储过程前添加: delimiter $$
6. 函数和存储过程 定义头部去除 as
7. 函数中 declare 必须定义到最前面。 且 declare 没有 as
8. cast 函数
Cast(xxx as int) 会出错,=》 cast( xxx as signed) 或 cast( xxx as unsigned) ;
cast(xxx as varchar(30)) 会出错 ,=》 cast(xxx as char(30));
9. 数据类型及系统函数: getdate() => now() , top 1 => limit 0,1
10. 即使没有参数,可不能省略 ()
11. proc =》 procedure
12. exec p c1,c2 => call p(c1,c2)
13. 动态执行SQL:
不能用nvarchar,
declare sqlStr varchar(4000) ; set sqlStr = '很长的SQL'; set @sqlStr = replace(sqlStr,'{CorpID}', CorpID ) ; prepare smt from @sqlStr ; execute smt ; DEALLOCATE PREPARE smt;
第三行。 一定要定义一个临时变量才能被 prepare ,我用了 @sqlStr , 它不是 sqlStr.
14. select 给变量赋值 : select @id = Id,@name= name from tab where Id=1 ; => select Id,Name into id,name from tab where Id = 1 ;
15. 退出存储过程的方法 :没有 return , exit,quit 之类的。
在定义存储过程头部 begin 前添加标签 : bn: begin ,在需要退出的地方,执行: leave bn;
16.避免变量名和列名重名。
delimiter $$ create procedure atest(Id int) begin select * from S_City where Id = Id ; end; $$ call atest( 3) ;
并不会返回 Id 为3 的记录。
17.
![]() |
作者:NewSea 出处:http://newsea.cnblogs.com/
QQ,MSN:iamnewsea@hotmail.com 如无特别标记说明,均为NewSea原创,版权私有,翻载必纠。欢迎交流,转载,但要在页面明显位置给出原文连接。谢谢。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
2008-08-06 编程获取 VSS 版本号大于1的最新代码