1. 程式人生 > >查詢ACCESS時使用萬用字元來簡化工作

查詢ACCESS時使用萬用字元來簡化工作

     我們都知道,在SQL查詢中可以使用百分號%來模糊查詢; 但是,實際上JET-SQL支援好幾種萬用字元, 這意外著,我們在查詢ACCESS和SQL Server時可以更自由的定義模糊查詢的方式,而不是單純死板的只能使用%匹配任意個數的任意字元. 

   這些萬用字元一般老師不會講,我們也很少注意. 使用得當會提高我們的工作效率,某些工作不再需要編碼完成,簡單一個SQL就能搞定! 當然,比起有名的正則表示式, 還是弱多了! 詳細支援的萬用字元列如下(源自ACCESS線上幫助及<Microsoft Jet SQL參考>):

字元 說明 示例
* 與任何個數的字元匹配。在字串中,它可以當作第一個或最後一個字元使用。 wh* 可以找到 what、white 和 why
? 與任何單個字母的字元匹配。 B?ll 可以找到 ball、bell 和 bill
[ ] 與方括號內任何單個字元匹配。 B[ae]ll 可以找到 ball 和 bell 但找不到 bill
! 匹配任何不在方括號之內的字元。 b[!ae]ll 可以找到 bill 和 bull 但找不到 ball 或 bell
- 與某個範圍內的任一個字元匹配。必須按升序指定範圍(A 到 Z,而不是 Z 到 A)。 b[a-c]d 可以找到 bad、bbd 和 bcd
# 與任何單個數字字元匹配。 1#3 可以找到 103、113、123

   在下面的例子裡,會返回以字母 P 開頭、而其後接著介於 A 到 F 之間的任何字母和三個數字的資料:

Like "P[A-F]###"

在下面的列表中說明如何使用 Like 運算子來測試不同樣式的表示式。


符合的種類

樣式
符合(返回 True ) 不符合(返回 False )
多個字元 a*a aa,aBa,aBBBa aBC
*ab* abc,AABB,Xab aZb,bac
特殊字元 a[*]a a*a aaa
多個字元 ab* abcdefg,abc cab,aab
單一字元 a?a aaa,a3a,aBa aBBBa
單一數字 a#a a0a,a1a,a2a aaa,a10a
字元範圍 [a-z] f,p,j 2, &
範圍之外 [!a-z] 9, &, % b,a
非數字 [!0-9] A,a,&,~ 0, 1, 9
組合字 a[!b-m]# An9,az0,a99 abc,aj0

    但實際使用中還有一點我們需要注意,上面的萬用字元是在ACCESS介面中支援的,即在ACCESS的查詢介面或查詢替換對話方塊中使用的,而Jet SQL使用的是另一套,也就是說在我們自己的工程中寫SQL時需要使用下面這套萬用字元:

字元 說明 示例
% 與任何個數的字元匹配,在字串中,它可以當作第一個或最後一個字元使用。 wh% 可以找到 what、white 和 why
_ 與任何單個字母的字元匹配。 B_ll 可以找到 ball、bell 和 bill
[ ] 與方括號內任何單個字元匹配。 B[ae]ll 可以找到 ball 和 bell 但找不到 bill
^ 匹配任何不在方括號之內的字元。 b[^ae]ll 可以找到 bill 和 bull 但找不到 ball 或 bell
- 與某個範圍內的任一個字元匹配。必須按升序指定範圍(A 到 Z,而不是 Z 到 A)。 b[a-c]d 可以找到 bad、bbd 和 bcd

    也許你和我一樣(因為我經常用ACCESS自動生成SQL語句,修改後直接貼到程式碼的SQL裡.),不喜歡在ACCESS中(指直接使用ACCESS程式來開啟mdb檔案)使用*來代替%以匹配多個字元,那麼也有個解決辦法:

   開啟ACCESS的工具選單 >> 選項子選單 >> 表/查詢 頁面 >> SQL Server 相容語法(Ansi 92) >> 勾選下面複選框"當前資料庫";

   若想將這項"作為新資料庫的預設設定", 那麼你必須先在 高階 頁面 的 預設檔案格式 下拉選單選擇 "ACCESS 2002 - 2003".

   經過上面的設定,我們在ACCESS的查詢介面寫SQL就也可以用%來匹配多個字元了.

===================================

非註明轉載的文章和blog在未特殊宣告情況下一般為本人原創或整理,
原創文章版權歸沙漠孤狐(lonefox)所有;轉載文章版權歸原作者所有;

歡迎轉載,但請註明出處,保留作者和版權資訊。

===================================