2011-03-13 83 views
2

我目前通過ADO 2.8(使用Delphi)和Access數據庫以及有時使用SQL Server 2005來使用SQL。 但是,2個數據庫的語法並不相同。 爲了適應2個數據庫的查詢,在某處是否存在差異列表? Convert Microsoft Access (JET SQL) to SQL Server (T-SQL)但它似乎不是最新的。
備註:我沒有使用現有的數據庫;我用ADO創建它們。
有些'編輯'幫助信息: 1 /我的目標是隻有一個查詢訪問& MS SQL,並根據選擇的數據庫翻譯查詢。 爲此,我需要知道什麼是我查詢的最佳語法,以及在更改數據庫時如何翻譯(以及是否必須翻譯)。Jet MS Access和SQL Server之間的ADO SQL語法差異列表

示例:日期時間: 訪問:SELECT * FROM MYTABLE WHERE SomeDate =#1/1/2005#
T-SQL:SELECT * FROM MYTABLE WHERE SomeDate = '1/1/2005'

但我發現了一些信息,你可能會用到這兩個: SELECT * FROM MYTABLE WHERE SomeDate =#2011-02-22 00.00.00#

+3

什麼ADO,Access和SQL Server的版本? – DOK 2011-03-13 19:16:14

+0

好評! ADO 2.8和SQL Server 2005(或更多):我將編輯我的問題。 – philnext 2011-03-13 19:35:18

+2

是什麼讓你認爲被引用的文章已經過時? – 2011-03-13 20:49:12

回答

1

如果你的興趣是DDL查詢Access(Jet/ACE)和SQL服務器,請參閱MSDN上的此數據類型表:Equivalent ANSI SQL Data Types

+0

是的......但Iam對SQL語法有所瞭解 – philnext 2011-03-24 18:35:21

0

首先,試圖使Access和SQL Server之間的魔術翻譯器根本不值得。將查詢封裝到Access的庫中以及通過接口進行交互的SQL Server的另一個封裝會更容易。其次,由於您使用的是Jet,所以鏈接已經足夠了。也就是說,鏈接中沒有提到一個值得注意的項目。

插入連接中的括號。

在Access中,如果加入兩個表格,則不需要任何括號。然而,一旦你超越兩個表,你必須做的廢話,如:

Select 
From (TableA 
    Inner Join TableB 
     On TableB.FK = TableA.PK) 
    Inner Join TableC 
     On TableC.FK = TableA.PK 

SQL過程的服務器並不需要這一點,但將履行它如果使用它。如果超出三個表格,我不知道Jet(和Access的QBE網格)使用什麼算法來確定允許的語法,但本質上它是對錶進行配對。

以下是關於噴氣SQL一些鏈接,儘管前兩個參考Access 2000中,它們仍然適用於任何噴氣發展:

Intermediate Microsoft Jet SQL for Access 2000

Advanced Microsoft Jet SQL for Access 2000

Jet SQL Syntax for Select Queries