3 回答

TA貢獻1891條經驗 獲得超3個贊
直接的答案是通配符的行為取決于所使用接口的ANSI查詢模式。
ANSI-89查詢模式(“傳統模式”)使用*
字符,ANSI-92查詢模式(“ SQL Server兼容模式”)使用%
字符。這些模式特定于ACE / Jet,并且僅與ANSI / ISO SQL-89和SQL-92標準具有相似之處。
ADO接口(OLE DB)始終使用ANSI-92查詢模式。
DAO接口始終使用ANSI-89查詢模式。
使用ODBC時,可以通過ExtendedAnsiSQL標志顯式指定查詢模式。
從2003版本開始的MS Access用戶界面可以使用任何一種查詢模式,因此在任何給定時間都不要假設它是另一種(例如,在驗證規則中不要使用特定于查詢模式的通配符)。
ACE / Jet SQL語法具有一個ALIKE
關鍵字,無論接口的查詢模式如何,該關鍵字都允許使用ANSI-92查詢模式字符(%
和_
),但是具有ALIKE
關鍵字與SQL-92不兼容的輕微缺點(但是ALIKE
仍具有高度可移植性) 。但是,主要缺點是,我了解該ALIKE
關鍵字不受官方支持(盡管我無法想象它很快就會消失或改變行為)。

TA貢獻1848條經驗 獲得超2個贊
通過ODBC訪問Jet,我不清楚應該使用什么通配符。我假設使用自然的Jet SQL(* /?),但是由于我從不通過ODBC使用Jet數據,所以我不能說。
正如Remou所引用的那樣,在Access中,在代碼中,這取決于您使用的是哪種數據訪問接口-ADO(在Access中沒有人應使用該接口),而您使用%/ _,而使用DAO(Jet的本機接口層) ),則使用Jet的本機通配符(* /?)。
在更高版本的Access中,在Access中執行SQL是一個例外。我不知道是Access 2002還是2003添加了它,但是如今,您可以打開ANSI SQL 92兼容模式。如果這樣做,通配符將變為%/ _而不是* /?。但是能夠選擇ANSI模式僅適用于Access本身-正如有一天告訴我們的那樣,您必須選擇不同的數據接口庫以使用不同的SQL模式,而ADO使用92和DAO和ODBC 89。
- 3 回答
- 0 關注
- 512 瀏覽
添加回答
舉報