我一直在訪問關鍵術語LIKE
和它的使用問題。我想用在查詢表格下面的正則表達式(正則表達式)作爲一種「verfication規則」的其中LIKE
運營商過濾我的結果:Microsoft office Access`LIKE` VS`RegEx`
"^[0]{1}[0-9]{8,9}$"
這又如何實現呢?
我一直在訪問關鍵術語LIKE
和它的使用問題。我想用在查詢表格下面的正則表達式(正則表達式)作爲一種「verfication規則」的其中LIKE
運營商過濾我的結果:Microsoft office Access`LIKE` VS`RegEx`
"^[0]{1}[0-9]{8,9}$"
這又如何實現呢?
我不認爲Access允許正則表達式匹配(VBA除外,但這不是你要求的)。 LIKE
運營商甚至不支持交替。
因此,您需要將其分成兩個表達式。
... WHERE (Blah LIKE "0#########") OR (Blah LIKE "0########")
(#
意味着Access中的「單個數字」)。
我知道你不是問的VBA,但也許你就會給它一個機會
如果打開VBA項目,插入新的模塊,然後選擇工具 - >引用並添加引用到Microsoft VBScript Regular Expressions 5.5。鑑於下面的代碼將指向新插入的模塊。
Function my_regexp(ByRef sIn As String, ByVal mypattern As String) As String
Dim r As New RegExp
Dim colMatches As MatchCollection
With r
.Pattern = mypattern
.IgnoreCase = True
.Global = False
.MultiLine = False
Set colMatches = .Execute(sIn)
End With
If colMatches.Count > 0 Then
my_regexp = colMatches(0).Value
Else
my_regexp = ""
End If
End Function
現在你可以在你的SQL查詢使用上述功能。所以你的問題現在可以通過調用
SELECT my_regexp(some_variable, "^[0]{1}[0-9]{8,9}$") FROM some_table
如果沒有任何內容匹配會返回空字符串。
希望你喜歡它。
感謝您抽出寶貴時間!它效果很好。 – PhilNicholas 2014-04-18 08:20:08
你好,我有這個方法的一個小問題,它也爲NULL字段返回true。不是一個大問題,我可以解決這個問題,但我很好奇爲什麼會發生這種情況。 – Cornel 2016-06-23 21:23:33
RegEx不會在Access/Jet/ACE中的SQL中高效使用。它沒有內置到數據庫引擎中,所以它不會使用索引。它也不是VBA的一部分,但如果你真的想使用文件系統對象的RegEx,也可以。但對於驗證規則(我不知道任何其他可能意味着「變體規則」),您根本不能使用RegEx。但是,可以使用您用於編輯的控件的BeforeUpdate事件,然後使用File System Object中的RegEx函數來測試控件的Text屬性中的值,並相應地執行操作。 – 2011-04-07 03:48:00