Někdy může být potřeba hledat v databázové tabulce pouze ty řádky, které obsahují alespoň jedno číslo v daném sloupci.
Technicky mohou být čísla reprezentována slovy a jinými symboly, ale zde „číslo“ znamená „číselnou číslici“.
Níže jsou příklady, jak najít řádky, které obsahují alespoň jedno číslo v různých DBMS založených na SQL.
SQL Server
V SQL Serveru můžeme použít LIKE
operátor:
SELECT ProductName
FROM Products
WHERE ProductName LIKE '%[0-9]%';
Tento příklad vrátí ProductName
ze sloupce Products
tabulka, kde je v ProductName
alespoň jedna číslice sloupec.
Oracle
V Oracle můžeme použít REGEXP_LIKE
podmínka se vzorem regulárního výrazu:
SELECT ProductName
FROM Products
WHERE REGEXP_LIKE(ProductName, '[0-9]+');
REGEXP_LIKE
společnosti Oracle podmínka odpovídá standardu regulárních výrazů POSIX. Proto můžeme získat stejný výsledek s následujícím vzorem:
SELECT ProductName
FROM Products
WHERE REGEXP_LIKE(ProductName, '[[:digit:]]');
MySQL
V MySQL můžeme použít REGEXP
funkce:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
Můžeme také použít POSIX v MySQL:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';
MariaDB
MariaDB má také REGEXP
funkce, takže můžeme použít stejný kód jako u MySQL:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
Můžeme také použít POSIX v MariaDB:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';
PostgreSQL
Zde je ekvivalent PostgreSQL:
SELECT ProductName
FROM Products
WHERE ProductName ~ '[0-9]+';
A ekvivalent POSIX:
SELECT ProductName
FROM Products
WHERE ProductName ~ '[[:digit:]]';
SQLite
V SQLite můžeme použít následující kód:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
REGEXP
Operátor je speciální syntaxe pro REGEXP()
uživatelská funkce v SQLite.
Proto můžeme použít následující kód k získání stejného výsledku:
SELECT ProductName
FROM Products
WHERE REGEXP('[0-9]+', ProductName);