No SQL, o operador menor que (
<
) compara duas expressões e retorna TRUE
se o operando esquerdo tiver valor inferior ao operando direito; caso contrário, o resultado é FALSE
. Exemplo
Aqui está um exemplo para demonstrar.
SELECT * FROM city
WHERE Population < 600;
Resultado:
+------+--------------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+--------------------+---------------+-------------+--------------| | 62 | The Valley | AIA | – | 595 | | 2316 | Bantam | CCK | Home Island | 503 | | 2317 | West Island | CCK | West Island | 167 | | 2728 | Yaren | NRU | – | 559 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | | 3538 | Città del Vaticano | VAT | – | 455 | +------+--------------------+---------------+-------------+--------------+
Essa consulta retorna todas as cidades com população inferior a 600.
Exclusivo
O operador menor que não inclui o valor especificado em sua avaliação.
Por exemplo, o exemplo a seguir não retorna Fakaofo, que tem uma população de 300:
SELECT * FROM city
WHERE Population < 300;
Resultado:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | +------+-------------+---------------+-------------+--------------+
Para incluir cidades com uma população de 300 habitantes, precisaríamos aumentar nosso valor especificado:
SELECT * FROM city
WHERE Population < 301;
Resultado:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | +------+-------------+---------------+-------------+--------------+
Datas
Aqui está um exemplo para demonstrar o uso do operador menor que para comparar valores de data.
SELECT PetName, DOB
FROM Pets
WHERE DOB < '2020-01-01';
Resultado:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | +-----------+------------+
Cordas
Você também pode usar o operador menor que para comparar valores de string. Ao comparar com um valor de string, use aspas ao redor da string.
SELECT * FROM city
WHERE Name < 'Ab';
Resultado:
+------+------------------------------+---------------+---------------------+--------------+ | ID | Name | CountryCode | District | Population | |------+------------------------------+---------------+---------------------+--------------| | 20 | ´s-Hertogenbosch | NLD | Noord-Brabant | 129170 | | 548 | Šumen | BGR | Varna | 94686 | | 670 | A Coruña (La Coruña) | ESP | Galicia | 243402 | | 698 | [San Cristóbal de] la Laguna | ESP | Canary Islands | 127945 | | 2450 | Šiauliai | LTU | Šiauliai | 146563 | | 3097 | Aachen | DEU | Nordrhein-Westfalen | 243825 | | 3318 | Aalborg | DNK | Nordjylland | 161161 | | 3479 | Šostka | UKR | Sumy | 90000 | | 3665 | Šahty | RUS | Rostov-na-Donu | 221800 | | 3736 | Štšolkovo | RUS | Moskova | 104900 | +------+------------------------------+---------------+---------------------+--------------+
Esta consulta retorna todas as cidades menores que
Ab
. Basicamente, ele retorna todas as cidades que começam com letras menores que Ab
. Várias Condições
Se você tiver várias condições, poderá usar vários operadores menores que.
Assim:
SELECT * FROM city
WHERE Name < 'Ab' AND Population < 100000;
Resultado:
+------+--------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+--------+---------------+------------+--------------| | 548 | Šumen | BGR | Varna | 94686 | | 3479 | Šostka | UKR | Sumy | 90000 | +------+--------+---------------+------------+--------------+
Precedência
Você também pode usar uma combinação de operadores ao filtrar os resultados.
Observe que o SQL tem uma ordem de precedência que atribui a diferentes tipos de operadores. Por exemplo, ele avalia qualquer operador condicional antes de qualquer operador lógico, como
AND
e OR
. Ele também avalia qualquer AND
operadores antes de qualquer OR
operadores. Os parênteses têm precedência mais alta do que todos os operadores e, portanto, você pode usar parênteses para especificar a ordem na qual cada condição deve ser avaliada.
Considere o seguinte exemplo:
SELECT * FROM city
WHERE Name < 'Ab'
AND Population < 100000
OR District = 'Canary Islands';
Resultado:
+------+------------------------------+---------------+----------------+--------------+ | ID | Name | CountryCode | District | Population | |------+------------------------------+---------------+----------------+--------------| | 548 | Šumen | BGR | Varna | 94686 | | 660 | Las Palmas de Gran Canaria | ESP | Canary Islands | 354757 | | 672 | Santa Cruz de Tenerife | ESP | Canary Islands | 213050 | | 698 | [San Cristóbal de] la Laguna | ESP | Canary Islands | 127945 | | 3479 | Šostka | UKR | Sumy | 90000 | +------+------------------------------+---------------+----------------+--------------+
Nesta consulta, não forneci parênteses e, portanto, o
AND
operador foi avaliado antes do OR
operador. Portanto, obtivemos linhas que satisfizeram
Name < 'Ab' AND Population < 100000
ou District = 'Canary Islands'
. Podemos dizer apenas olhando para isso que todas as cidades das Ilhas Canárias serão devolvidas, além de quaisquer cidades que satisfaçam os primeiros critérios. Isso é como fazer o seguinte:
SELECT * FROM city
WHERE (Name < 'Ab'
AND Population < 100000)
OR District = 'Canary Islands';
Isso nos daria o mesmo resultado da consulta anterior sem parênteses.
Mas veja o que acontece quando movemos os parênteses para o
OR
doença. SELECT * FROM city
WHERE Name < 'Ab'
AND (Population < 100000
OR District = 'Canary Islands');
Resultado:
+------+------------------------------+---------------+----------------+--------------+ | ID | Name | CountryCode | District | Population | |------+------------------------------+---------------+----------------+--------------| | 548 | Šumen | BGR | Varna | 94686 | | 698 | [San Cristóbal de] la Laguna | ESP | Canary Islands | 127945 | | 3479 | Šostka | UKR | Sumy | 90000 | +------+------------------------------+---------------+----------------+--------------+
Desta vez, obtivemos apenas as cidades que satisfizeram tanto
Population < 100000 OR District = 'Canary Islands'
e Name < 'Ab'
. Negando a condição
Você pode usar o
NOT
operador para negar a condição fornecida pelo operador menor que. Aqui está um exemplo:SELECT PetName, DOB
FROM Pets
WHERE NOT DOB < '2019-12-31';
Resultado:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fluffy | 2020-11-20 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | +-----------+------------+