Podczas pracy z MariaDB czasami możesz potrzebować zwrócić wszystkie wiersze, które nie zawierają żadnych liczb.
Technicznie liczby mogą być reprezentowane przez słowa i inne symbole, ale w tym artykule „liczba” oznacza po prostu „cyfrę”. Więc znajdujemy wartości, które nie zawierają żadnych cyfr.
Przykład
Załóżmy, że mamy tabelę o nazwie Products
z następującymi danymi w swoim ProductName
kolumna:
SELECT ProductName
FROM Products;
Wynik:
+-------------------------------------+ | ProductName | +-------------------------------------+ | Left Handed Screwdriver | | Right Handed Screwdriver | | Bottomless Coffee Cup | | Smash 2000 Sledgehammer | | Chainsaw (includes 3 spare fingers) | | Bottomless Coffee Mugs (4 Pack) | +-------------------------------------+
Ta kolumna oczywiście zawiera dane znakowe, ale niektóre wiersze zawierają liczby w tych danych znakowych (nawet jeśli nie są one przechowywane jako typ liczbowy).
Możemy użyć następującego zapytania, aby zwrócić tylko te wiersze, które nie zawierają żadnych cyfr:
SELECT ProductName
FROM Products
WHERE ProductName NOT REGEXP '[0-9]+';
Wynik:
+--------------------------+ | ProductName | +--------------------------+ | Left Handed Screwdriver | | Right Handed Screwdriver | | Bottomless Coffee Cup | +--------------------------+
Zgodnie z oczekiwaniami zwracane są tylko te wiersze, które nie zawierają liczb.
W tym przypadku użyliśmy NOT REGEX
funkcja, aby znaleźć wszystkie wiersze, które pasują do wzorca. Wzór obejmuje wszystkie cyfry od 0
do 9
, plus dowolny inny znak.
Można to również napisać tak:
SELECT ProductName
FROM Products
WHERE NOT (ProductName REGEXP '[0-9]+');
Wynik:
+--------------------------+ | ProductName | +--------------------------+ | Left Handed Screwdriver | | Right Handed Screwdriver | | Bottomless Coffee Cup | +--------------------------+
To samo wyjście.