Poniższy przykład zwraca wszystkie wiersze, które nie zawierają żadnych liczb w PostgreSQL.
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) Straw Dog Box Bottomless Coffee Mugs (4 Pack) Smash 2000 Sledge Hammer Chainsaw (3 spare fingers)
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 !~ '[0-9]+';
Wynik:
productname -------------------------- Left handed screwdriver Right handed screwdriver Long Weight (blue) Long Weight (green) Straw Dog Box (5 rows)
Zgodnie z oczekiwaniami zwracane są tylko te wiersze, które nie zawierają żadnych cyfr.
W PostgreSQL !~
jest operatorem rozróżniającym wielkość liter, który jest używany do zwracania wartości, które nie pasują do podanego wyrażenia regularnego. W przypadku dopasowań bez rozróżniania wielkości liter użyj !~*
.
Możesz użyć ~
aby zwrócić wszystkie wiersze, które wykonają dopasuj wyrażenie regularne (i ~*
dla dopasowań bez rozróżniania wielkości liter).