sql >> Databasteknik >  >> NoSQL >> MongoDB

Upptäck om ett värde innehåller minst en numerisk siffra i SQL

Ibland kan du behöva söka i en databastabell endast efter de rader som innehåller minst ett nummer i en given kolumn.

Tekniskt sett kan siffror representeras av ord och andra symboler, men här betyder "nummer" "numerisk siffra".

Nedan är exempel på hur man hittar rader som innehåller minst ett nummer i olika SQL-baserade DBMS.

SQL-server

I SQL Server kan vi använda LIKE operatör:

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

Det exemplet returnerar ProductName kolumnen från Products tabell där det finns minst en siffra i ProductName kolumn.

Oracle

I Oracle kan vi använda den REGEXP_LIKE villkor med ett reguljärt uttrycksmönster:

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

Oracles REGEXP_LIKE villkoret överensstämmer med POSIX standarduttrycksstandard. Därför kan vi få samma resultat med följande mönster:

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

MySQL

I MySQL kan vi använda REGEXP funktion:

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

Vi kan också använda POSIX i MySQL:

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

MariaDB

MariaDB har också en REGEXP funktion, så att vi kan använda samma kod som med MySQL:

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

Vi kan också använda POSIX i MariaDB:

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

PostgreSQL

Här är PostgreSQL:s motsvarighet:

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

Och POSIX-motsvarigheten:

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

SQLite

I SQLite kan vi använda följande kod:

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

REGEXP operatorn är en speciell syntax för REGEXP() användarfunktion i SQLite.

Därför kan vi använda följande kod för att få samma resultat:

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

  1. Hur anger man en beställning eller sortering med C#-drivrutinen för MongoDB?

  2. Var finns datakatalogen i Redis?

  3. Förstå MongoDB-index

  4. Undantag:kan inte konvertera från BSON typ EOO till Date