查詢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)所有;轉載文章版權歸原作者所有;

http://blog.csdn.net/boythl

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

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

發佈了56 篇原創文章 · 獲贊 3 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章