Pokud potřebujete vrátit všechny řádky, které neobsahují žádná čísla, může vám pomoci následující.
Přísně vzato, čísla mohou být reprezentována slovy a jinými symboly, ale pro tento článek „číslo“ jednoduše znamená „číselná číslice“. Takže nacházíme hodnoty, které neobsahují žádné číselné číslice.
Příklad
Předpokládejme, že máme tabulku nazvanou Products
s následujícími údaji ve svém ProductName
sloupec:
SELECT ProductName
FROM Products;
Výsledek:
+-------------------------------------+ | ProductName | +-------------------------------------+ | Left handed screwdriver | | Right handed screwdriver | | Long Weight (blue) | | Long Weight (green) | | Smash 2000 Sledge Hammer | | Chainsaw (Includes 5 spare fingers) | | Straw Dog Box | | Bottomless Coffee Mugs (4 Pack) | +-------------------------------------+
Tento sloupec obsahuje znaková data, ale některé řádky obsahují čísla v těchto znakových datech (i když nejsou uloženy jako číselný typ).
Pomocí následujícího dotazu můžeme vrátit pouze ty řádky, které neobsahují žádné číselné číslice:
SELECT ProductName
FROM Products
WHERE ProductName NOT REGEXP '[0-9]+';
Výsledek:
+--------------------------+ | ProductName | +--------------------------+ | Left handed screwdriver | | Right handed screwdriver | | Long Weight (blue) | | Long Weight (green) | | Straw Dog Box | +--------------------------+
Podle očekávání jsou vráceny pouze ty řádky, které neobsahují čísla.
Zde jsme použili NOT REGEX
MySQL funkce najít všechny řádky, které odpovídají vzoru. Vzor obsahuje všechny číslice od 0
až 9
, plus jakýkoli jiný znak.
Dalo by se to napsat také takto:
SELECT ProductName
FROM Products
WHERE NOT (ProductName REGEXP '[0-9]+');
Výsledek:
+--------------------------+ | ProductName | +--------------------------+ | Left handed screwdriver | | Right handed screwdriver | | Long Weight (blue) | | Long Weight (green) | | Straw Dog Box | +--------------------------+