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

Détecter si une valeur contient au moins un chiffre numérique dans PostgreSQL

L'exemple suivant renvoie toutes les lignes qui contiennent au moins un chiffre numérique dans PostgreSQL.

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 contenant des nombres représentés par des chiffres :

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

Résultat :

           productname           
---------------------------------
 Bottomless Coffee Mugs (4 Pack)
 Smash 2000 Sledge Hammer
 Chainsaw (3 spare fingers)

Comme prévu, seules les lignes contenant des nombres sont renvoyées.

Dans PostgreSQL, ~ est un opérateur sensible à la casse pour faire correspondre l'expression régulière donnée. Pour les correspondances insensibles à la casse, utilisez ~* .

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