Lorsque vous travaillez avec MariaDB, vous pouvez parfois avoir besoin de renvoyer toutes les lignes qui ne contiennent aucun nombre.
Techniquement, les nombres peuvent être représentés par des mots et d'autres symboles, mais pour cet article, "nombre" signifie simplement "chiffre numérique". Nous trouvons donc des valeurs qui ne contiennent aucun chiffre numérique.
Exemple
Supposons que nous ayons une table appelée Products
avec les données suivantes dans son ProductName
colonne :
SELECT ProductName
FROM Products;
Résultat :
+-------------------------------------+ | ProductName | +-------------------------------------+ | Left Handed Screwdriver | | Right Handed Screwdriver | | Bottomless Coffee Cup | | Smash 2000 Sledgehammer | | Chainsaw (includes 3 spare fingers) | | Bottomless Coffee Mugs (4 Pack) | +-------------------------------------+
Cette colonne contient évidemment des données de caractères, mais certaines lignes contiennent des nombres dans ces données de caractères (même s'ils ne sont pas stockés en tant que type numérique).
Nous pouvons utiliser la requête suivante pour renvoyer uniquement les lignes qui ne contiennent aucun chiffre :
SELECT ProductName
FROM Products
WHERE ProductName NOT REGEXP '[0-9]+';
Résultat :
+--------------------------+ | ProductName | +--------------------------+ | Left Handed Screwdriver | | Right Handed Screwdriver | | Bottomless Coffee Cup | +--------------------------+
Comme prévu, seules les lignes qui ne contiennent pas de nombres sont renvoyées.
Dans ce cas, nous avons utilisé le NOT REGEX
fonction pour trouver toutes les lignes qui correspondent à un modèle. Le modèle englobe tous les chiffres numériques à partir de 0
à 9
, plus tout autre caractère.
Cela pourrait aussi être écrit comme ceci :
SELECT ProductName
FROM Products
WHERE NOT (ProductName REGEXP '[0-9]+');
Résultat :
+--------------------------+ | ProductName | +--------------------------+ | Left Handed Screwdriver | | Right Handed Screwdriver | | Bottomless Coffee Cup | +--------------------------+
Même sortie.