sql >> Databasteknik >  >> RDS >> MariaDB

Hur man upptäcker om ett värde innehåller minst en numerisk siffra i MariaDB

När du arbetar med MariaDB kan du ibland behöva returnera alla rader som innehåller minst en numerisk siffra.

I sådana fall kan följande exempel vara användbart.

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 innehåller siffror representerade av numeriska siffror:

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

Resultat:

+-------------------------------------+
| ProductName                         |
+-------------------------------------+
| Smash 2000 Sledgehammer             |
| Chainsaw (includes 3 spare fingers) |
| Bottomless Coffee Mugs (4 Pack)     |
+-------------------------------------+

Som förväntat returneras endast de rader som innehåller siffror.

I det här fallet använde vi REGEXP 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.


  1. Paginering med OFFSET / FETCH :Ett bättre sätt

  2. Får NoClassDefFoundError när jag försöker använda Proguard och SQLcipher i Android

  3. Kul med (columnstore) komprimering på ett väldigt stort bord – del 3

  4. SQLite introducerar UNIXEPOCH()-funktionen