sql >> Databáze >  >> RDS >> Database

) Operátor pro začátečníky

V SQL je operátor větší než (> ) porovná dva výrazy a vrátí TRUE má-li levý operand hodnotu vyšší než pravý operand; jinak vrátí FALSE .

Příklad

Zde je příklad k demonstraci.

SELECT * FROM city
WHERE Population > 9000000;

Výsledek:

+------+-----------------+---------------+--------------+--------------+
| ID   | Name            | CountryCode   | District     | Population   |
|------+-----------------+---------------+--------------+--------------|
| 206  | São Paulo       | BRA           | São Paulo    | 9968485      |
| 939  | Jakarta         | IDN           | Jakarta Raya | 9604900      |
| 1024 | Mumbai (Bombay) | IND           | Maharashtra  | 10500000     |
| 1890 | Shanghai        | CHN           | Shanghai     | 9696300      |
| 2331 | Seoul           | KOR           | Seoul        | 9981619      |
| 2822 | Karachi         | PAK           | Sindh        | 9269265      |
+------+-----------------+---------------+--------------+--------------+

Tento dotaz vrátí všechna města, která mají více než 9 milionů obyvatel.

Exkluzivní

Operátor větší než nezahrnuje zadanou hodnotu do svého vyhodnocení.

Například následující příklad nevrací Karáčí, které má podle této databáze přesně 9269265 obyvatel:

SELECT * FROM city 
WHERE Population > 9269265;

Výsledek:

+------+-----------------+---------------+--------------+--------------+
| ID   | Name            | CountryCode   | District     | Population   |
|------+-----------------+---------------+--------------+--------------|
| 206  | São Paulo       | BRA           | São Paulo    | 9968485      |
| 939  | Jakarta         | IDN           | Jakarta Raya | 9604900      |
| 1024 | Mumbai (Bombay) | IND           | Maharashtra  | 10500000     |
| 1890 | Shanghai        | CHN           | Shanghai     | 9696300      |
| 2331 | Seoul           | KOR           | Seoul        | 9981619      |
+------+-----------------+---------------+--------------+--------------+

Abychom zahrnuli města s počtem obyvatel 9269265, museli bychom snížit naši zadanou hodnotu:

SELECT * FROM city 
WHERE Population > 9269264;

Výsledek:

+------+-----------------+---------------+--------------+--------------+
| ID   | Name            | CountryCode   | District     | Population   |
|------+-----------------+---------------+--------------+--------------|
| 206  | São Paulo       | BRA           | São Paulo    | 9968485      |
| 939  | Jakarta         | IDN           | Jakarta Raya | 9604900      |
| 1024 | Mumbai (Bombay) | IND           | Maharashtra  | 10500000     |
| 1890 | Shanghai        | CHN           | Shanghai     | 9696300      |
| 2331 | Seoul           | KOR           | Seoul        | 9981619      |
| 2822 | Karachi         | PAK           | Sindh        | 9269265      |
+------+-----------------+---------------+--------------+--------------+

Buď to, nebo bychom mohli použít větší nebo rovno (>=). ) operátor.

SELECT * FROM city 
WHERE Population >= 9269265;

Výsledek:

+------+-----------------+---------------+--------------+--------------+
| ID   | Name            | CountryCode   | District     | Population   |
|------+-----------------+---------------+--------------+--------------|
| 206  | São Paulo       | BRA           | São Paulo    | 9968485      |
| 939  | Jakarta         | IDN           | Jakarta Raya | 9604900      |
| 1024 | Mumbai (Bombay) | IND           | Maharashtra  | 10500000     |
| 1890 | Shanghai        | CHN           | Shanghai     | 9696300      |
| 2331 | Seoul           | KOR           | Seoul        | 9981619      |
| 2822 | Karachi         | PAK           | Sindh        | 9269265      |
+------+-----------------+---------------+--------------+--------------+

Data

Zde je příklad, který demonstruje použití operátoru větší než k porovnání hodnot data.

SELECT PetName, DOB 
FROM Pets
WHERE DOB > '2020-01-01';

Výsledek:

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fluffy    | 2020-11-20 |
| Wag       | 2020-03-15 |
| Tweet     | 2020-11-28 |
| Fluffy    | 2020-09-17 |
+-----------+------------+

Řetězce

K porovnání hodnot řetězců můžete také použít operátor větší než. Při porovnávání s hodnotou řetězce použijte kolem řetězce uvozovky.

SELECT * FROM city 
WHERE Name > 'Zukovski'
ORDER BY Name;

Výsledek:

+------+----------+---------------+------------+--------------+
| ID   | Name     | CountryCode   | District   | Population   |
|------+----------+---------------+------------+--------------|
| 2669 | Zumpango | MEX           | México     | 99781        |
| 2025 | Zunyi    | CHN           | Guizhou    | 261862       |
| 3245 | Zürich   | CHE           | Zürich     | 336800       |
| 3145 | Zwickau  | DEU           | Saksi      | 104146       |
| 28   | Zwolle   | NLD           | Overijssel | 105819       |
| 3446 | Zytomyr  | UKR           | Zytomyr    | 297000       |
+------+----------+---------------+------------+--------------+

Více podmínek

Pokud máte více podmínek, můžete použít více operátorů větší než.

Takhle:

SELECT * FROM city 
WHERE Name > 'Zukovski' AND Population > 200000;

Výsledek:

+------+---------+---------------+------------+--------------+
| ID   | Name    | CountryCode   | District   | Population   |
|------+---------+---------------+------------+--------------|
| 2025 | Zunyi   | CHN           | Guizhou    | 261862       |
| 3245 | Zürich  | CHE           | Zürich     | 336800       |
| 3446 | Zytomyr | UKR           | Zytomyr    | 297000       |
+------+---------+---------------+------------+--------------+

Prednost

Při filtrování výsledků můžete také použít kombinaci operátorů.

Všimněte si, že SQL má pořadí priority, které přiřazuje různým typům operátorů. Například vyhodnocuje všechny podmíněné operátory před logickými operátory, jako je AND a OR . Vyhodnocuje také všechny AND operátory před libovolným OR operátory.

Závorky mají vyšší prioritu než všechny operátory, a proto můžete pomocí závorek určit pořadí, ve kterém se mají jednotlivé podmínky vyhodnocovat.

Zvažte následující příklad:

SELECT * FROM city 
WHERE Name > 'Zukovski' 
    AND Population > 100000
    OR District = 'Overijssel';

Výsledek:

+------+----------+---------------+------------+--------------+
| ID   | Name     | CountryCode   | District   | Population   |
|------+----------+---------------+------------+--------------|
| 15   | Enschede | NLD           | Overijssel | 149544       |
| 28   | Zwolle   | NLD           | Overijssel | 105819       |
| 2025 | Zunyi    | CHN           | Guizhou    | 261862       |
| 3145 | Zwickau  | DEU           | Saksi      | 104146       |
| 3245 | Zürich   | CHE           | Zürich     | 336800       |
| 3446 | Zytomyr  | UKR           | Zytomyr    | 297000       |
+------+----------+---------------+------------+--------------+

V tomto dotazu jsem neuvedl žádné závorky, a proto AND operátor byl vyhodnocen před OR operátor.

Proto jsme dostali řádky, které splňovaly buď Name > 'Zukovski' AND Population > 100000 nebo District = 'Overijssel' . Pouhým pohledem na to můžeme říci, že budou vrácena všechna města z okresu Overijssel plus všechna města, která splňují první kritéria.

Je to jako udělat následující:

SELECT * FROM city 
WHERE (Name > 'Zukovski' 
    AND Population > 100000)
    OR District = 'Overijssel';

To by nám dalo stejný výsledek jako předchozí dotaz bez závorek.

Ale podívejte se, co se stane, když přesuneme závorky do OR podmínka.

SELECT * FROM city 
WHERE Name > 'Zukovski' 
    AND (Population > 100000
    OR District = 'Overijssel');

Výsledek:

+------+---------+---------------+------------+--------------+
| ID   | Name    | CountryCode   | District   | Population   |
|------+---------+---------------+------------+--------------|
| 28   | Zwolle  | NLD           | Overijssel | 105819       |
| 2025 | Zunyi   | CHN           | Guizhou    | 261862       |
| 3145 | Zwickau | DEU           | Saksi      | 104146       |
| 3245 | Zürich  | CHE           | Zürich     | 336800       |
| 3446 | Zytomyr | UKR           | Zytomyr    | 297000       |
+------+---------+---------------+------------+--------------+

Tentokrát jsme dostali pouze ta města, která splnila obě Population > 100000 OR District = 'Overijssel' a Name > 'Overijssel' .

To vedlo k tomu, že bylo vráceno pouze jedno město z Overijsselu, na rozdíl od dvou v předchozím dotazu.

Negace podmínky

Můžete použít NOT operátor negovat podmínku poskytnutou operátorem větší než. Zde je příklad:

SELECT PetName, DOB 
FROM Pets
WHERE NOT DOB > '2019-12-31';

Výsledek:

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fetch     | 2019-08-16 |
| Scratch   | 2018-10-01 |
+-----------+------------+

  1. Použití ovladačů Easysoft ODBC s Informatica PowerCenter

  2. Jak změnit pořadové číslo databázového poštovního účtu v profilu v SQL Server (T-SQL)

  3. Jak dosáhnout shody s PCI pro MySQL a MariaDB pomocí ClusterControl - The Replay

  4. Oracle PLS-00363:výraz '' nelze použít jako cíl přiřazení