A volte potrebbe essere necessario cercare in una tabella di database solo quelle righe che contengono almeno un numero in una determinata colonna.
Tecnicamente, i numeri possono essere rappresentati da parole e altri simboli, ma qui "numero" significa "cifra numerica".
Di seguito sono riportati esempi di come trovare righe che contengono almeno un numero in vari DBMS basati su SQL.
SQL Server
In SQL Server possiamo usare LIKE
operatore:
SELECT ProductName
FROM Products
WHERE ProductName LIKE '%[0-9]%';
Quell'esempio restituisce il ProductName
colonna dai Products
tabella in cui è presente almeno una cifra nel ProductName
colonna.
Oracolo
In Oracle, possiamo usare il REGEXP_LIKE
condizione con un modello di espressione regolare:
SELECT ProductName
FROM Products
WHERE REGEXP_LIKE(ProductName, '[0-9]+');
REGEXP_LIKE
di Oracle la condizione è conforme allo standard delle espressioni regolari POSIX. Pertanto, possiamo ottenere lo stesso risultato con il seguente schema:
SELECT ProductName
FROM Products
WHERE REGEXP_LIKE(ProductName, '[[:digit:]]');
MySQL
In MySQL, possiamo usare REGEXP
funzione:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
Possiamo anche usare POSIX in MySQL:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';
MariaDB
MariaDB ha anche un REGEXP
funzione, quindi possiamo usare lo stesso codice di MySQL:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
Possiamo anche usare POSIX in MariaDB:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';
PostgreSQL
Ecco l'equivalente di PostgreSQL:
SELECT ProductName
FROM Products
WHERE ProductName ~ '[0-9]+';
E l'equivalente POSIX:
SELECT ProductName
FROM Products
WHERE ProductName ~ '[[:digit:]]';
SQLite
In SQLite, possiamo usare il seguente codice:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
Il REGEXP
è una sintassi speciale per REGEXP()
funzione utente in SQLite.
Pertanto, possiamo utilizzare il seguente codice per ottenere lo stesso risultato:
SELECT ProductName
FROM Products
WHERE REGEXP('[0-9]+', ProductName);