Latest web development tutorials

MySQL Expressões Regulares

Na seção anterior nós aprendemos através da MySQL como ...% para correspondência difusa.

MySQL também suporta outra correspondência de expressões regulares, MySQL operador REGEXP para usar a correspondência de expressão regular.

Se você sabe PHP ou Perl, em seguida, a operação é muito simples, porque MySQL expressão regular correspondente semelhante a esses scripts.

Na tabela abaixo, o modo normal pode ser usado no operador EXPREG.

modo descrição
^ Corresponde ao início da cadeia. Se você definir a propriedade Multiline do objeto RegExp, ^ também coincide com '\ n' posição ou '\ r' depois.
$ Coincidir com a extremidade de entrada da cadeia. Se você definir a propriedade Multiline RegExp objeto, também correspondência $ '\ n' posição ou '\ r' antes.
. Corresponde a qualquer caractere único, exceto "\ n" é. Para corresponder incluindo '\ n', incluindo quaisquer caracteres, como o uso de '[. \ N]' modo.
[...] Conjunto de caracteres. Corresponde a qualquer caractere incluído. Por exemplo, '[abc]' corresponde a "simples" no 'a'.
[^ ...] conjunto de caracteres negativo. Corresponde a qualquer caractere que não está incluído. Por exemplo, '[^ abc] "partidas" simples "na' p '.
p1 | p2 | P3 p1 jogo, p2 ou p3. Por exemplo, 'z | food' pode coincidir com o "z" ou "comida". '(Z | f) ood' irá corresponder "zood" ou "comida".
* Jogos anteriores subexpressão zero ou mais vezes. Por exemplo, Zo * pode corresponder a "z" e "zoo". * Equivalente a {0,}.
+ Jogos anteriores subexpressão uma ou mais vezes. Por exemplo, "zo +" irá corresponder "zo" e "zoo", mas não pode coincidir com o "z". + É equivalente a {1}.
{N} n é um número inteiro não negativo. Combinando os n vezes determinados. Por exemplo, "o {2} 'não coincide com o" Bob "no' o ', mas pode coincidir com o" alimento "nos dois o.
{N, m} m e n são números inteiros não negativos, onde n <= m. Correspondência de pelo menos n vezes e igualar-se a m vezes.

Exemplos

Depois de saber as necessidades mais regulares, podemos ser mais às suas próprias necessidades para escrever instrução SQL com uma expressão regular. Abaixo vamos listar alguns pequenos exemplos (nome da tabela: person_tbl) para aprofundar nossa compreensão:

Localizar todos os nomes de campo de dados para início 'st' com:

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';

Localizar todos os nomes de campo de dados para 'ok' para o final:

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';

Encontrar um campo de nome contém cadeias todos os dados 'Mar':

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';

Encontrar um campo de nome para começar com vogais e com final 'ok' da cadeia de todos os dados:

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';