MS Access 查询转换为 Sql Server
Posted
技术标签:
【中文标题】MS Access 查询转换为 Sql Server【英文标题】:MS Access Queries Conversion to Sql Server 【发布时间】:2014-06-20 12:58:50 【问题描述】:我正在将大量访问查询转换为 sql server 存储过程。所以sql需要满足t-sql标准。例如 IIF 等 是否有可以将大访问查询转换为 t-sql 的工具?这样做的最佳方法是什么?
【问题讨论】:
对不起,但我认为最好的方法是手动逐个翻译查询。 【参考方案1】:至于只是为您转换查询的“工具”,我不知道有一个。 this thread 或 this site 上也没有任何人。
不过,有几个地方我可以指导你,这可能有助于过渡。
Here is a cheat sheet you can use as a quick glance when converting your queries.
如果您的查询使用任何 [Forms]!参考,也可能有问题。 (我从未尝试过,但我会假设它不起作用。)
This resource 可能对您可能需要在 SQL Server 中学习的内容进行了最详细的解释。从存储查询到处理 NULL 到其他一些差异。与 T-SQL 相比,MS Access SQL 也存在差异。 Gordon Linoff 在他的blog 中简要描述了 10 个重要区别。
-
Access不支持case语句,所以条件逻辑是
使用非标准的
IIf()
或 Switch()
函数完成。
访问需要在每个成对连接周围加上括号,从而导致
嵌套在 from 子句中的扩散仅用于
让学习 SQL 的人感到困惑。
访问联接语法要求 INNER 用于 INNER JOIN。虽然它可能
使用内部进行澄清是一个好主意,它经常被省略
练习(在其他数据库中)。
Access 不支持完全外连接。
访问不允许子查询中的 union 或 union all。
总之,不,我没有见过任何工具。
【讨论】:
Linoff 先生的博客 cmets 的一些更正和扩展。 RE: (1) Access 还有一个Switch()
函数,它与CASE .. WHEN
更接近,可以避免多个嵌套的IIf()
函数。 RE: (6) 不,表别名不需要AS
关键字;它是可选的。 RE: (7) Access SQL 支持字符串文字的单引号和双引号。 Access SQL 还支持 &
和 +
进行字符串连接,尽管它们处理 Null 的方式不同。
谢谢!好点。我经常忘记Switch()
的存在。如果您认为合适,请随时编辑我的答案! 2 个头脑大于 1 个。以上是关于MS Access 查询转换为 Sql Server的主要内容,如果未能解决你的问题,请参考以下文章
谁能帮我将 Access Query 转换为 MS SQL Query
在 MS Access SQL 查询中从普通日期转换为 unix 纪元日期