Microsoft office Access `LIKE` VS` RegEx`

He tenido problemas con el término clave de acceso LIKE y su uso. Quiero utilizar el siguiente RegEx (expresión regular) en el formulario de consulta como una especie de “regla de verificación” donde el operador LIKE filtra mis resultados:

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

¿Cómo se puede lograr esto?

No creo que Access permita las coincidencias de expresiones regulares (excepto en VBA, pero eso no es lo que estás preguntando). El operador LIKE ni siquiera admite la alternancia.

Por lo tanto, debes dividirlo en dos expresiones.

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

( # significa “un solo dígito” en Acceso).

Sé que no estabas preguntando sobre la VBA, pero tal vez le darás una oportunidad

Si abre un proyecto de VBA, inserte un nuevo módulo, luego seleccione Herramientas -> Referencias y agregue una referencia a Microsoft VBScript Regular Expressions 5.5 . Dado que pate el código a continuación al módulo recién insertado.

 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 

Ahora puede usar la función anterior en sus consultas SQL . Entonces su pregunta se resolvería ahora invocando

 SELECT my_regexp(some_variable, "^[0]{1}[0-9]{8,9}$") FROM some_table 

if devolverá una cadena vacía si no hay coincidencia.

Espero que les haya gustado.