在java中ACCESS模糊查詢出現的奇怪問題,使用%不行的解決方案。

在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就可以了。

 

大家還有更好的方法,歡迎討論。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章