在SQL Server中模糊查詢通常是這樣的Select * from userInfo where userName like '%a%'
但是在Access中用這條語句執行的時候竟然發現查不出結果,怎麼可能呢?
後來google了下,發現問題如下:
要進行模糊查找,則必須使用通配符,ACCESS庫的通配符和SQL SERVER的通配符不一樣。
ACCESS庫的通配符爲:
* 與任何個數的字符匹配。
? 與任何單個字母的字符匹配
在SQL Server中的通配符爲:
% 與任何個數的字符匹配
- 與單個字符匹配
但是又發現,java連接到Access數據庫之後,用這樣一條語句Select * from userInfo where userName like '*a*' (注意,這邊按照上述通配符的要求將%修改爲*了,在access查詢分析器中可以)竟然搜索不到應該存在的N條記錄,比較鬱悶。怎麼可能呢?明明直接在Access中執行的時候是有結果的呀!!!
後來又google了下,要在access上做改動,如下:
access工具菜單-->選項-->表/查詢-->sql server 兼容語法(ANSI 92)
這樣就可以了,不過這個時候注意了,要用%做通配符了,因爲兩種數據庫使用的sql語言版本不同,默認access好像使用sql-89改成基於sql-92就可以了。
大家還有更好的方法,歡迎討論。