Jeśli chcesz zwrócić wszystkie wiersze, które nie zawierają żadnych liczb, pomocne mogą być poniższe czynności.
Ściśle mówiąc, 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 | | Long Weight (blue) | | Long Weight (green) | | Smash 2000 Sledge Hammer | | Chainsaw (Includes 5 spare fingers) | | Straw Dog Box | | Bottomless Coffee Mugs (4 Pack) | +-------------------------------------+
Ta kolumna zawiera dane znakowe, ale niektóre wiersze zawierają liczby w ramach 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 | | Long Weight (blue) | | Long Weight (green) | | Straw Dog Box | +--------------------------+
Zgodnie z oczekiwaniami zwracane są tylko te wiersze, które nie zawierają liczb.
Tutaj użyliśmy NOT REGEX
MySQL 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 | | Long Weight (blue) | | Long Weight (green) | | Straw Dog Box | +--------------------------+