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

Trouver des valeurs qui ne contiennent pas de nombres dans PostgreSQL

L'exemple suivant renvoie toutes les lignes qui ne contiennent aucun nombre dans PostgreSQL.

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)
 Straw Dog Box
 Bottomless Coffee Mugs (4 Pack)
 Smash 2000 Sledge Hammer
 Chainsaw (3 spare fingers)

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 !~ '[0-9]+';

Résultat :

       productname        
--------------------------
 Left handed screwdriver
 Right handed screwdriver
 Long Weight (blue)
 Long Weight (green)
 Straw Dog Box
(5 rows)

Comme prévu, seules les lignes qui ne contiennent aucun chiffre numérique sont renvoyées.

Dans PostgreSQL, !~ est un opérateur sensible à la casse utilisé pour renvoyer des valeurs qui ne correspondent pas à l'expression régulière donnée. Pour les correspondances insensibles à la casse, utilisez !~* .

Vous pouvez utiliser ~ pour renvoyer toutes les lignes qui font correspondre à l'expression régulière (et ~* pour les correspondances insensibles à la casse).