Microsoft Office Access `LIKE` VS` RegEx`
У меня возникли проблемы с ключевым термином доступа LIKE
и он используется. Я хочу использовать следующий RegEx (регулярное выражение) в форме запроса как своего рода "правило верфи", где оператор LIKE
фильтрует мои результаты:
"^[0]{1}[0-9]{8,9}$"
Как это можно сделать?
Ответы
Ответ 1
Я не думаю, что Access разрешает регулярные выражения (кроме VBA, но это не то, что вы просите). Оператор LIKE
даже не поддерживает чередование.
Поэтому вам нужно разбить его на два выражения.
... WHERE (Blah LIKE "0#########") OR (Blah LIKE "0########")
(#
означает "одна цифра" в Access).
Ответ 2
Я знаю, что вы не спрашивали о VBA, но, возможно, вы дадите ему шанс
Если вы открываете проект VBA, вставьте новый модуль, затем выберите Инструменты → Ссылки и добавьте ссылку на Microsoft VBScript Regular Expressions 5.5. Учитывая, что pate код ниже для вновь вставленного модуля.
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
если возвращает пустую строку, если ничего не сопоставлено.
Надеюсь, вам понравилось.