Při práci s MariaDB se občas může stát, že budete potřebovat vrátit všechny řádky, které neobsahují žádná čísla.
Technicky lze čísla reprezentovat slovy a jinými symboly, ale pro tento článek „číslo“ znamená jednoduše „čí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 | | Bottomless Coffee Cup | | Smash 2000 Sledgehammer | | Chainsaw (includes 3 spare fingers) | | Bottomless Coffee Mugs (4 Pack) | +-------------------------------------+
Tento sloupec samozřejmě 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 | | Bottomless Coffee Cup | +--------------------------+
Podle očekávání jsou vráceny pouze ty řádky, které neobsahují čísla.
V tomto případě jsme použili NOT REGEX
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 | | Bottomless Coffee Cup | +--------------------------+
Stejný výstup.