Microsoft office Access " как " VS " регулярное выражение`

у меня возникли проблемы с термином ключа доступа LIKE и это использовать. Я хочу использовать следующее регулярное выражение (регулярное выражение) в форме запроса как своего рода "правила верификации", где LIKE оператор фильтрует мои результаты:

"^[0]{1}[0-9]{8,9}$"

как это сделать?

2 ответов


Я не думаю, что доступ позволяет регулярное выражение матчей (за исключением VBA, но это не то, что вы спрашиваете). The LIKE оператор даже не поддерживает чередование.

поэтому вам нужно разделить его на два выражения.

... WHERE (Blah LIKE "0#########") OR (Blah LIKE "0########")

(# означает "одна цифра" в Access).


Я знаю, что вы не спрашивали о VBA, но, возможно, вы дадите ему шанс

Если вы открываете проект VBA, вставьте новый модуль, затем выберите Инструменты -> Ссылки и добавить ссылку Регулярные Выражения Microsoft VBScript 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

если вернет пустую строку, если ничего не совпало.

Надеюсь, вам понравилось.