Pregunta Microsoft office Access `LIKE` VS` RegEx`


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

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

¿Cómo se puede lograr esto?


11
2018-04-04 13:26


origen


Respuestas:


No creo que Access permita las coincidencias de expresiones regulares (excepto en VBA, pero eso no es lo que estás preguntando). los LIKE el operador 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).


10
2018-04-04 13:42



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 elija Herramientas -> Referencias y agrega 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 de arriba en su SQL consultas. 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.


25
2018-04-04 13:54