O operador like retorna true se uma string corresponder a um padrão(pattern) específico. Um padrão(pattern) inclui caracteres regulares e caracteres especiais. Os caracteres especiais são chamados curingas ou wildcards.
Aqui usaremos dois curingas: porcentagem (%) e sublinhado (_):
- A porcentagem (%) corresponde a qualquer sequência de zero ou mais caracteres.
- O sublinhado (_) corresponde a qualquer caractere único.
O operador like é usado na cláusula where das instruções select, update e delete para formar um predicado para filtrar linhas com base em um padrão.
Exemplos Usando o Operador like
Usaremos a tabela countries para exemplos o operador like
+---------------+---------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+---------------+------+-----+---------+----------------+ | country_id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(50) | YES | | NULL | | | area | decimal(10,2) | NO | | NULL | | | national_day | date | YES | | NULL | | | country_code2 | char(2) | NO | UNI | NULL | | | country_code3 | char(3) | NO | UNI | NULL | | | region_id | int(11) | NO | MUL | NULL | | +---------------+---------------+------+-----+---------+----------------+
#1 Usando a porcentagem (%) para encontrar países cujos nomes terminam com a letra ‘d’:
select name from countries where name like ‘%d’;
MariaDB [nation]> select name from countries where name like '%d'; +------------------+ | name | +------------------+ | Bouvet Island | | Switzerland | | Christmas Island | | Finland | | Greenland | | Ireland | | Iceland | | Norfolk Island | | New Zealand | | Poland | | Swaziland | | Chad | | Thailand | +------------------+
#2 Agora pesquisamos os países iniciados com b
select name from countries where name like ‘b%’;
MariaDB [nation]> select name from countries where name like 'b%'; +--------------------------------+ | name | +--------------------------------+ | Burundi | | Belgium | | Benin | | Burkina Faso | | Bangladesh | | Bulgaria | | Bahrain | | Bahamas | | Bosnia and Herzegovina | | Belarus | | Belize | | Bermuda | | Bolivia | | Brazil | | Barbados | | Brunei | | Bhutan | | Bouvet Island | | Botswana | | British Indian Ocean Territory | +--------------------------------+
#3 Países iniciados com br
select name from countries where name like ‘br%’;
MariaDB [nation]> select name from countries where name like 'br%'; +--------------------------------+ | name | +--------------------------------+ | Brazil | | Brunei | | British Indian Ocean Territory |
#6 encontrar países cujos nomes contêm a string ‘state’:
select name from countries where name like ‘%state%’;
MariaDB [nation]> select name from countries where name like '%state%'; +--------------------------------------+ | name | +--------------------------------------+ | Federated States of Micronesia | | United States Minor Outlying Islands | | United States | | Holy See (Vatican City State) | +--------------------------------------+
#7 Usando _ e % para buscar países com segunda letra sendo n
select name from countries where name like ‘_n%’;
MariaDB [nation]> select name from countries where name like '_n%'; +--------------------------------------+ | name | +--------------------------------------+ | Angola | | Anguilla | | Andorra | | United Arab Emirates | | Antarctica | | Antigua and Barbuda | | United Kingdom | | Indonesia | | India | | United States Minor Outlying Islands | | United States | +--------------------------------------+
O Caractere de Escape(escape)
Às vezes, os dados que você deseja usar na linha de comando podem conter caracteres curinga, como 10% ou 10_12.
Podemos usar o caractere de barra invertida (\) como o caractere de escape padrão. Assim, tirando o sentido desses caracteres especiais.
Exemplos,
Podemos usar a \
...like '%\_20%';
Podemos uar também a cláusula escape
...like '%#_20%' escape '#';