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