【问题标题】:MS Access Queries Conversion to Sql ServerMS Access 查询转换为 Sql Server
【发布时间】:2014-06-20 12:58:50
【问题描述】:

我正在将大量访问查询转换为 sql server 存储过程。所以sql需要满足t-sql标准。例如 IIF 等 是否有可以将大访问查询转换为 t-sql 的工具?这样做的最佳方法是什么?

【问题讨论】:

  • 对不起,但我认为最好的方法是手动逐个翻译查询。

标签: sql-server ms-access


【解决方案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 个重要区别。

  1. Access不支持case语句,所以条件逻辑是 使用非标准的 IIf() 或 Switch() 函数完成。
  2. 访问需要在每个成对连接周围加上括号,从而导致 嵌套在 from 子句中的扩散仅用于 让学习 SQL 的人感到困惑。
  3. 访问联接语法要求 INNER 用于 INNER JOIN。虽然它可能 使用内部进行澄清是一个好主意,它经常被省略 练习(在其他数据库中)。
  4. Access 不支持完全外连接。
  5. 访问不允许子查询中的 union 或 union all。
  6. Access 需要 AS 作为表别名。在大多数数据库中,这 是可选的,我更喜欢只使用 as 作为列别名。 具有讽刺意味的是,在 Oracle 中禁止使用 as 作为表别名。
  7. Access 使用双引号来分隔字符串(而不是单引号) 引号)并且是(据我所知)唯一使用 & 作为 字符串连接运算符。
  8. Access 使用 * 作为通配符,而不是 %。
  9. 访问允许 BETWEEN AND 。这在其他数据库中是允许的,但是 将始终评估为 false。
  10. Access 不支持窗口/分析函数(使用 over 和分句)。

总之,不,我没有见过任何工具。

【讨论】:

  • Linoff 先生的博客 cmets 的一些更正和扩展。 RE: (1) Access 还有一个Switch() 函数,它与CASE .. WHEN 更接近,可以避免多个嵌套的IIf() 函数。 RE: (6) 不,表别名不需要AS 关键字;它是可选的。 RE: (7) Access SQL 支持字符串文字的单引号和双引号。 Access SQL 还支持 & 和 + 进行字符串连接,尽管它们处理 Null 的方式不同。
  • 谢谢!好点。我经常忘记Switch() 的存在。如果您认为合适,请随时编辑我的答案! 2 个头脑大于 1 个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-20
  • 1970-01-01
  • 1970-01-01
  • 2020-12-04
  • 1970-01-01
  • 2020-07-05
相关资源
最近更新 更多