Página 23
+-----------+---------------+
No MySQL, 0 são valores falsos e 1 são valores verdadeiros. Este tratamento especial de NULL é por que isto foi necessário para determinar se os animais não estão mortos, usando death IS NOT NULL ao invés de death != NULL.
Unindo Modelo
MySQL fornece um modelo do SQL padronizado unindo assim um formulário de modelo baseado em expressões regulares parecidas com aquelas utilizadas por utilitários de Unix tal como vi, grep e sed. Modelo do SQL permite você usar "_" para unir qualquer caracter único, e "%" para unir um número arbitrário de caracteres (incluindo zero caracteres). No MySQL, modelos do SQL são caso insensível por default. Alguns exemplos são mostrados baixo. Note que você não usa = ou != quando você usa modelos do SQL; use o GOSTADO DE ou NÃO operadores de comparação IGUAIS ao invés.
Para encontrar nomes começam com "b":
mysql> SELECT * FROM pet WHERE name LIKE "b%";
+--------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+------------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+
Para encontrar nomes finalizando com "%fy":
mysql> SELECT * FROM pet WHERE name LIKE "%fy";
+--------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+
Para encontrar nomes contendo uns "w":
mysql> SELECT * FROM pet WHERE name LIKE "%w%";
+----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+
Para encontrar nomes contendo exatamente cinco caracteres, usam os caracteres de modelo "_":
mysql> SELECT * FROM pet WHERE name LIKE "_____";
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+
O outro tipo de modelo fornecido por MySQL usa expressões regulares. Quando você testa este tipo de modelo, usa os operadores REGEXP e NOT REGEXP (ou RLIKE e NOT RLIKE, que são sinônimos). Algumas características expressões regulares são:
* "." casa qualquer caracter único.
* Uma classe de caracter "[...]" une qualquer caracter dentro dos suportes.
Por exemplo, "[abc]" une "a", "b" ou "c". Para especificar uma série de caracteres, usam um traço. "[a-z]" une qualquer letra minúscula, ao passo que "[0-9]" une qualquer dígito.
* "*" une zero ou mais solicitações. Por exemplo, "x*" une qualquer número de "x" caracteres, "[0-9]*" une qualquer número de dígitos, e ".*" une qualquer número de algo.
* Expressões Regulares são casos sensíveis, mas você pode usar uma classe de caracter para unir ambos lettercases. Por Exemplo, "[aA]" une letra minúscula ou maiúscula "a" e "[a-zA-Z]" une qualquer letra em um caso ou outro.
* O modelo ocorre em qualquer parte na existência do valor testado (modelos do SQL unem unicamente os valores inteiros).
* Para ancorar um modelo de modo que isto deve unir o começo ou término da existência do valor testado, use "^" no começo ou "$" no final do modelo.
Para trabalho de expressões regulares, as perguntas LIKE e REGEXP podem ser usadas abaixo:
Para encontrar nomes que começam com "b", para unir o começo do nome use "^" e "[bB]" para unir letra minúscula com outra maiúscula "b":
mysql> SELECT * FROM pet WHERE name REGEXP "^[bB]";
+--------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+------------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+
Para encontrar nomes finalizando com "fy" use e "$" para unir no final do nome:
mysql> SELECT * FROM pet WHERE name REGEXP "fy$";
+--------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+
Para encontrar nomes contendo "w" use "[wW]" e para unir letra minúscula com outra maiúscula "w":
mysql> SELECT * FROM pet WHERE name REGEXP "[wW]";
+----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+
Um modelo de expressão regular ocorre em qualquer parte do valor, isto não é necessário uma pergunta prévia para colocar um wildcard no lado um do outro para obter a união do valor inteiro, poderia ser utilizado um modelo do SQL. Para encontrar nomes contendo exatamente cinco caracteres, use "^" e "$" para unir o começo e término do nome, e cinco expressões de ".":
mysql> SELECT * FROM pet WHERE name REGEXP "^.....$";
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+
|