Czasami może być konieczne przeszukanie tabeli bazy danych tylko pod kątem wierszy, które zawierają co najmniej jedną liczbę w danej kolumnie.
Technicznie rzecz biorąc, liczby mogą być reprezentowane przez słowa i inne symbole, ale tutaj „liczba” oznacza „cyfrę”.
Poniżej znajdują się przykłady, jak znaleźć wiersze zawierające co najmniej jedną liczbę w różnych DBMS opartych na SQL.
Serwer SQL
W SQL Server możemy użyć LIKE
operator:
SELECT ProductName
FROM Products
WHERE ProductName LIKE '%[0-9]%';
Ten przykład zwraca ProductName
kolumna z Products
tabela, w której w ProductName
znajduje się co najmniej jedna cyfra kolumna.
Wyrocznia
W Oracle możemy użyć REGEXP_LIKE
warunek ze wzorcem wyrażenia regularnego:
SELECT ProductName
FROM Products
WHERE REGEXP_LIKE(ProductName, '[0-9]+');
Oracle REGEXP_LIKE
warunek jest zgodny ze standardem wyrażeń regularnych POSIX. Dlatego możemy uzyskać ten sam wynik za pomocą następującego wzoru:
SELECT ProductName
FROM Products
WHERE REGEXP_LIKE(ProductName, '[[:digit:]]');
MySQL
W MySQL możemy użyć REGEXP
funkcja:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
Możemy również używać POSIX w MySQL:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';
MariaDB
MariaDB ma również REGEXP
funkcji, więc możemy użyć tego samego kodu, co w MySQL:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
Możemy również używać POSIX w MariaDB:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';
PostgreSQL
Oto odpowiednik PostgreSQL:
SELECT ProductName
FROM Products
WHERE ProductName ~ '[0-9]+';
I odpowiednik POSIX:
SELECT ProductName
FROM Products
WHERE ProductName ~ '[[:digit:]]';
SQLite
W SQLite możemy użyć następującego kodu:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
REGEXP
operator jest specjalną składnią dla REGEXP()
funkcja użytkownika w SQLite.
Dlatego możemy użyć następującego kodu, aby uzyskać ten sam wynik:
SELECT ProductName
FROM Products
WHERE REGEXP('[0-9]+', ProductName);