sql >> Database >  >> NoSQL >> MongoDB

Detecteren of een waarde ten minste één numeriek cijfer in SQL bevat

Soms moet u in een databasetabel zoeken naar alleen die rijen die ten minste één getal in een bepaalde kolom bevatten.

Technisch gezien kunnen getallen worden weergegeven door woorden en andere symbolen, maar hier betekent "nummer" "numeriek cijfer".

Hieronder staan ​​voorbeelden van hoe u rijen kunt vinden die ten minste één nummer bevatten in verschillende op SQL gebaseerde DBMS'en.

SQL-server

In SQL Server kunnen we de LIKE . gebruiken operator:

SELECT ProductName 
FROM Products
WHERE ProductName LIKE '%[0-9]%';

Dat voorbeeld retourneert de ProductName kolom uit de Products tabel met ten minste één cijfer in de ProductName kolom.

Oracle

In Oracle kunnen we de REGEXP_LIKE gebruiken voorwaarde met een patroon voor reguliere expressies:

SELECT ProductName 
FROM Products
WHERE REGEXP_LIKE(ProductName, '[0-9]+');

Oracle's REGEXP_LIKE voorwaarde voldoet aan de POSIX-standaard voor reguliere expressies. Daarom kunnen we hetzelfde resultaat krijgen met het volgende patroon:

SELECT ProductName 
FROM Products
WHERE REGEXP_LIKE(ProductName, '[[:digit:]]');

MySQL

In MySQL kunnen we de REGEXP gebruiken functie:

SELECT ProductName 
FROM Products
WHERE ProductName REGEXP '[0-9]+';

We kunnen POSIX ook gebruiken in MySQL:

SELECT ProductName 
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';

MariaDB

MariaDB heeft ook een REGEXP functie, zodat we dezelfde code kunnen gebruiken als bij MySQL:

SELECT ProductName 
FROM Products
WHERE ProductName REGEXP '[0-9]+';

We kunnen POSIX ook gebruiken in MariaDB:

SELECT ProductName 
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';

PostgreSQL

Hier is het equivalent van PostgreSQL:

SELECT ProductName 
FROM Products
WHERE ProductName ~ '[0-9]+';

En het POSIX-equivalent:

SELECT ProductName 
FROM Products
WHERE ProductName ~ '[[:digit:]]';

SQLite

In SQLite kunnen we de volgende code gebruiken:

SELECT ProductName 
FROM Products
WHERE ProductName REGEXP '[0-9]+';

De REGEXP operator is een speciale syntaxis voor de REGEXP() gebruikersfunctie in SQLite.

Daarom kunnen we de volgende code gebruiken om hetzelfde resultaat te krijgen:

SELECT ProductName 
FROM Products
WHERE REGEXP('[0-9]+', ProductName);

  1. Veld verwijderen gevonden in een mongodb-array

  2. Nu beschikbaar:volledig gehoste MongoDB-instanties op AWS

  3. Spring data rest-toepassing krijgt geen gegevens uit de database na implementatie van redis-caching

  4. Hoe verwijder ik vastgelopen/verouderde Resque-werknemers?