När du arbetar med MariaDB kan du ibland behöva returnera alla rader som inte innehåller några siffror.
Tekniskt sett kan siffror representeras av ord och andra symboler, men för den här artikeln betyder "nummer" helt enkelt "numerisk siffra". Så vi hittar värden som inte innehåller några numeriska siffror.
Exempel
Anta att vi har en tabell som heter Products
med följande data i dess ProductName
kolumn:
SELECT ProductName
FROM Products;
Resultat:
+-------------------------------------+ | ProductName | +-------------------------------------+ | Left Handed Screwdriver | | Right Handed Screwdriver | | Bottomless Coffee Cup | | Smash 2000 Sledgehammer | | Chainsaw (includes 3 spare fingers) | | Bottomless Coffee Mugs (4 Pack) | +-------------------------------------+
Den här kolumnen innehåller uppenbarligen teckendata, men vissa rader innehåller siffror inom dessa teckendata (även om de inte är lagrade som en numerisk typ).
Vi kan använda följande fråga för att returnera bara de rader som inte innehåller några numeriska siffror:
SELECT ProductName
FROM Products
WHERE ProductName NOT REGEXP '[0-9]+';
Resultat:
+--------------------------+ | ProductName | +--------------------------+ | Left Handed Screwdriver | | Right Handed Screwdriver | | Bottomless Coffee Cup | +--------------------------+
Som förväntat returneras endast de rader som inte innehåller siffror.
I det här fallet använde vi NOT REGEX
funktion för att hitta alla rader som matchade ett mönster. Mönstret omfattar alla numeriska siffror från 0
till 9
plus alla andra tecken.
Detta kan också skrivas så här:
SELECT ProductName
FROM Products
WHERE NOT (ProductName REGEXP '[0-9]+');
Resultat:
+--------------------------+ | ProductName | +--------------------------+ | Left Handed Screwdriver | | Right Handed Screwdriver | | Bottomless Coffee Cup | +--------------------------+
Samma utgång.