Nogle gange skal du muligvis kun søge i en databasetabel efter de rækker, der indeholder mindst ét tal i en given kolonne.
Teknisk set kan tal repræsenteres af ord og andre symboler, men her betyder "tal" "numerisk ciffer".
Nedenfor er eksempler på, hvordan man finder rækker, der indeholder mindst ét tal i forskellige SQL-baserede DBMS'er.
SQL-server
I SQL Server kan vi bruge LIKE
operatør:
SELECT ProductName
FROM Products
WHERE ProductName LIKE '%[0-9]%';
Dette eksempel returnerer ProductName
kolonne fra Products
tabel, hvor der er mindst ét ciffer i ProductName
kolonne.
Oracle
I Oracle kan vi bruge REGEXP_LIKE
betingelse med et regulært udtryksmønster:
SELECT ProductName
FROM Products
WHERE REGEXP_LIKE(ProductName, '[0-9]+');
Oracles REGEXP_LIKE
betingelse overholder POSIX regulære udtryksstandard. Derfor kan vi få det samme resultat med følgende mønster:
SELECT ProductName
FROM Products
WHERE REGEXP_LIKE(ProductName, '[[:digit:]]');
MySQL
I MySQL kan vi bruge REGEXP
funktion:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
Vi kan også bruge POSIX i MySQL:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';
MariaDB
MariaDB har også en REGEXP
funktion, så vi kan bruge samme kode som med MySQL:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
Vi kan også bruge POSIX i MariaDB:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';
PostgreSQL
Her er PostgreSQLs ækvivalent:
SELECT ProductName
FROM Products
WHERE ProductName ~ '[0-9]+';
Og POSIX-ækvivalenten:
SELECT ProductName
FROM Products
WHERE ProductName ~ '[[:digit:]]';
SQLite
I SQLite kan vi bruge følgende kode:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
REGEXP
operator er en speciel syntaks for REGEXP()
brugerfunktion i SQLite.
Derfor kan vi bruge følgende kode til at få det samme resultat:
SELECT ProductName
FROM Products
WHERE REGEXP('[0-9]+', ProductName);