MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Rileva se un valore contiene almeno una cifra numerica in SQL

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