English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Expressões Regulares MySQL

No capítulo anterior,我们已经了解到MySQL pode LIKE ...% para combinação imprecisa.

O MySQL também suporta outras combinações de expressões regulares, no MySQL, a combinação de expressões regulares é feita usando o operador REGEXP.

Se você entender PHP ou Perl, o uso é muito simples, porque a combinação de expressões regulares do MySQL é semelhante a esses scripts.

os padrões na tabela a seguir podem ser aplicados ao operador REGEXP.

padrãodescrição
^combina a posição inicial da string de entrada. Se o atributo Multiline do objeto RegExp estiver definido, ^ também combina a posição após '\n' ou '\r'.
$combina a posição final da string de entrada. Se o atributo Multiline do objeto RegExp estiver definido, $ também combina a posição antes de '\n' ou '\r'.
.combina qualquer caractere singular, exceto "\n". Para combinar qualquer caractere, incluindo '\n', use um padrão como '[.\n]'.
[...]conjunto de caracteres. Combina qualquer caractere incluído. Por exemplo, '[abc]' pode combinar 'a' em "plain".
[^...]conjunto de caracteres negativo. Combina qualquer caractere não incluído. Por exemplo, '[^abc]' pode combinar 'p' em "plain".
p1|p2|p3combina p1 ou p2 ou p3。Por exemplo, 'z|food' pode combinar "z" ou "food". '(z|f)ood' combina "zood" ou "food".
*combina a expressão subordinada anterior zero ou mais vezes. Por exemplo, zo* pode combinar "z" e "zoo".* equivalente a {0,}。
+combina a expressão subordinada anterior uma ou mais vezes. Por exemplo, 'zo+' pode combinar "zo" e "zoo", mas não pode combinar "z".+ equivalente a {1,}。
{n}n é um inteiro não negativo. Combina n vezes determinadas. Por exemplo, 'o{2}' não pode combinar 'o' em "Bob", mas pode combinar os dois 'o' em "food".
{n,m}m e n são inteiros não negativos, onde n <= m. Fazer o menor número de combinações n e o maior número de combinações m.

Exemplos Online

Após entender as necessidades regulares, podemos escrever consultas SQL com expressões regulares conforme necessário. A seguir, apresentaremos alguns exemplos pequenos (nome da tabela: person_tbl) para aprofundar nossa compreensão:

Encontrar todos os dados com o campo name começando com 'st':

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

Encontrar todos os dados com o campo name terminando com a string 'ok':

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

Encontrar todos os dados com o campo name contendo a string 'mar':

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

Encontrar todos os dados com o campo name começando com um caractere vogal ou terminando com a string 'ok':

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