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);