Ir para o conteúdo

Expressões Regulares

Visão Geral

Uma Expressão Regular é uma notação ou, especificamente, uma sequência de símbolos e caracteres que expressam uma string ou padrão. Eles geralmente são usados na área Business SQL do Vinyl para validar a entrada do usuário ou restringir/encontrar um padrão específico em um grande trecho de texto.

Sempre que LIKE é usado em uma cláusula where com um curinga (%), você está usando expressões regulares. Você pode estar familiarizado com a declaração WHERE MyField LIKE 'ABCD%', mas você também pode usar colchetes para pesquisar um intervalo WHERE MyField LIKE '[A-B][CD][A-Z][A-Z]%' que retornará qualquer registro com uma combinação de A ou B como o primeiro caractere, C ou D como o segundo, quaisquer caracteres alfa nos próximos dois caracteres e qualquer outra coisa no final.

A mesma estrutura Reg Ex se aplica aos números. Se você estiver filtrando em um intervalo de valores, digamos 900-919, poderá filtrar WHERE MyField IN ('900', '901', '902'... etc) mas é mais limpo de usar WHERE MyField LIKE '9[0-1][0-9]' (lidando com campos de string aqui, não com números). você pode encontrar números de telefone que se encaixem no padrão WHERE MyField LIKE '[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]'

Abaixo está um exemplo semelhante ao exemplo acima onde, neste caso, a expressão está validando se os registros em FieldValue contêm as cadeias de caracteres 900S, 901S, 902S, ..., 919S.

whereclause.png

Você também pode usar o ^ caractere que representa NOT na string WHERE MyField LIKE '[^0-9]%' que retornará registros com um caractere não numérico como primeiro caractere, seguido por qualquer coisa. WHERE MyField LIKE '[A-Z][^A-Z]' retornará registros com dois caracteres, sendo o primeiro alfabético e o segundo não alfabético.

Nota

O Vinyl não suporta o caractere '+' ao usar LIKE para Regex. Se você deseja usar esse caractere, você pode fazê-lo usando o Regex Validation Plugin.

Existem TONELADAS de outras ferramentas poderosas dentro de Expressões Regulares que podem ser usadas com Vinyl - as mencionadas neste artigo são algumas das mais comuns usadas. Aqui está um link do tutorial se você quiser saber mais: https://www.mssqltips.com/sqlservertutorial/9108/precise-alphabetic-filtering-with-regular-expressions-for-tsql/