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