sql >> Databasteknik >  >> RDS >> PostgreSQL

Upptäck om ett värde innehåller minst en numerisk siffra i PostgreSQL

Följande exempel returnerar alla rader som innehåller minst en numerisk siffra i PostgreSQL.

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

Den här kolumnen innehåller teckendata, men vissa rader innehåller siffror inom dessa teckendata (även om de inte lagras 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 ~ '[0-9]+';

Resultat:

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

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

I PostgreSQL, ~ är en skiftlägeskänslig operator för att matcha det givna reguljära uttrycket. För skiftlägesokänsliga matchningar, använd ~* .

Du kan använda !~ för att returnera alla rader som inte matchar det reguljära uttrycket (och !~* för skiftlägesokänsliga matchningar).


  1. Postgres triggerbaserad infogningsomdirigering utan att bryta RETURNING

  2. Använder AT TIME ZONE för att fixa en gammal rapport

  3. SQL mellan inte inkluderande

  4. Skapa en pivottabell med PostgreSQL