我們都知道,在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)所有;轉載文章版權歸原作者所有;
歡迎轉載,但請註明出處,保留作者和版權信息。
===================================