sql >> Database >  >> RDS >> PostgreSQL

Detecteren of een waarde ten minste één numeriek cijfer bevat in PostgreSQL

Het volgende voorbeeld retourneert alle rijen die ten minste één numeriek cijfer in PostgreSQL bevatten.

Voorbeeld

Stel dat we een tabel hebben met de naam Products met de volgende gegevens in zijn ProductName kolom:

SELECT ProductName 
FROM Products;

Resultaat:

           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)

Deze kolom bevat tekengegevens, maar sommige rijen bevatten getallen binnen die tekengegevens (ook al zijn ze niet opgeslagen als een numeriek type).

We kunnen de volgende query gebruiken om alleen die rijen te retourneren die getallen bevatten die worden weergegeven door numerieke cijfers:

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

Resultaat:

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

Zoals verwacht worden alleen de rijen die getallen bevatten geretourneerd.

In PostgreSQL, ~ is een hoofdlettergevoelige operator voor het matchen van de gegeven reguliere expressie. Gebruik voor hoofdletterongevoelige overeenkomsten ~* .

Je kunt !~ . gebruiken om alle rijen te retourneren die niet overeenkomen met de reguliere expressie (en !~* voor niet-hoofdlettergevoelige overeenkomsten).


  1. Hoe de tabelnaam in een dynamische SQL-query in te stellen?

  2. Hoe GOTO te gebruiken in SQL Server

  3. Gegevens selecteren van twee verschillende servers in SQL Server

  4. Probleem met Oracle-bindvariabelen die index niet correct gebruiken