[英]Converting Access SQL Queries to SqlServer
我已经完成了将访问表,查询,宏和报表的DOZENS转换为SQL Server的任务,到目前为止,它的发展还很糟糕。
例如这样的:
SELECT [Numbers by Quarter and Bedsize].SizeCategory,
[Numbers by Quarter and Bedsize].Bedsize,
[Numbers by Quarter and Bedsize].[SumOfNumber of CLABSI],
[Numbers by Quarter and Bedsize].[SumOfCentral Line Days],
Round(1000*[Numbers by Quarter and Bedsize].[SumOfNumber of CLABSI]/[Numbers by Quarter and Bedsize].[SumOfCentral Line Days],2) AS [State CLABSI Rate],
[Numbers by Quarter and Bedsize].SummaryYQ
FROM [Numbers by Quarter and Bedsize]
ORDER BY [Numbers by Quarter and Bedsize].SizeCategory, [Numbers by Quarter and Bedsize].SummaryYQ;
虽然我以前见过SQL代码(主要是mysql),但从未见过[Numbers by Quarter and Bedsize].SizeCategory
有什么好的教程可以将Access SQL转换为SQLServer? 请注意,我之前从未真正接触过Access或SqlServer。
我从未见过像[Numbers by Quarter and Bedsize] .SizeCategory这样的东西
这是点限定名称的示例。 点左侧的元素是相关名称。 如果您在from子句中未提供显式的关联名称,则假定默认的关联名称等于表名称。 例如
SELECT [Numbers by Quarter and Bedsize].SizeCategory
FROM [Numbers by Quarter and Bedsize];
...实际上被解析为:
SELECT [Numbers by Quarter and Bedsize].SizeCategory
FROM [Numbers by Quarter and Bedsize] AS [Numbers by Quarter and Bedsize];
您会看到相关名称称为“别名”,这是不正确的,但可悲的是变成了白话。
可以说,如果选择了简短的相关名称,它可以使代码更易于阅读,例如
SELECT n.SizeCategory
FROM [Numbers by Quarter and Bedsize] AS n;
表格名称周围的方括号是带引号的标识符。 在Standard SQL中,带引号的标识符是双引号( "
)。Access数据库引擎(ACE,Jet,无论如何)均不符合SQL标准,并使用方括号。SQLServer可以使用标准方括号和专有方括号作为引用标识符。
如果数据元素否则是非法的(例如包含空格或非空格字符或以空格开头),则访问需要带引号的标识符。 通过示例构建器进行的Access查询会趋向于在所有数据元素名称周围添加带引号的标识符,无论是否实际需要它们。
由于存在空格,因此表名Numbers by Quarter and Bedsize
需要使用引号标识符。 我建议您将端口作为重命名数据元素的机会。 虽然可能需要进行完整的修订(我会质疑所选名称的总体质量),但是有些“低落的果实”将是用下划线替换空格字符的机会。
根据上述建议,并添加一些格式,查询将变为:
SELECT n.SizeCategory,
n.Bedsize,
n.SumOfNumber_of_CLABSI,
n.SumOfCentral_Line_Days,
Round(1000 * n.SumOfNumber_of_CLABSI / n.SumOfCentral_Line_Days, 2)
AS State_CLABSI_Rate,
n.SummaryYQ
FROM Numbers_by_Quarter_and_Bedsize AS n
ORDER
BY SizeCategory, SummaryYQ;
显然,端口将涉及语法更改,但是您还应该查找行为更改。 例如,除非值之一是DECIMAL
类型,否则Access SQL中的除法将导致FLOAT
;在这种情况下,结果是DECIMAL
; SQL Server中的行为是不同的。 您将面临的挑战之一是Access的文档非常差,例如,Access帮助或Microsoft的其他任何官方文档中都没有提到我刚才关于部门划分的断言。 我必须通过反复试验自己弄清楚。
我建议您在Access和SQL Server中都编写全面的测试,以确保移植的SQL不会导致更改的行为。
您正在做的事情似乎不需要完全手动完成...
您是否考虑过使用免费的Microsoft SQL Server迁移助手(SSMA)从Access到MS SQL Server 2008进行“升级”?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.