Mysql
 sql >> Base de données >  >> RDS >> Mysql

Trouver des valeurs qui ne contiennent pas de nombres dans MySQL

Si vous devez renvoyer toutes les lignes qui ne contiennent aucun nombre, ce qui suit peut vous aider.

À proprement parler, 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            |
| Long Weight (blue)                  |
| Long Weight (green)                 |
| Smash 2000 Sledge Hammer            |
| Chainsaw (Includes 5 spare fingers) |
| Straw Dog Box                       |
| Bottomless Coffee Mugs (4 Pack)     |
+-------------------------------------+

Cette colonne contient 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 |
| Long Weight (blue)       |
| Long Weight (green)      |
| Straw Dog Box            |
+--------------------------+

Comme prévu, seules les lignes qui ne contiennent pas de nombres sont renvoyées.

Ici, nous avons utilisé le NOT REGEX de MySQL 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 |
| Long Weight (blue)       |
| Long Weight (green)      |
| Straw Dog Box            |
+--------------------------+