sql >> Database >  >> RDS >> PostgreSQL

De functie Substring gebruiken in PostgreSQL en Redshift

Soms kan een tekenreeks in uw database informatie bevatten die in die tekenreeks is ingesloten als een subtekenreeks. Deze tekenreeks kan een ID-nummer zijn dat mogelijk voorkomt in een activiteit of trackingnummer voor de website van uw bedrijf.

Hier is een voorbeeld waarbij een bedrijf dat de activiteit van websiteverkeer controleert, een specifieke naamgevingsconventie heeft voor de Activity Tracking-ID. De naamgeving is "Activiteits-ID" dat 6 tekens lang is en op de eerste positie "Klant-ID" dat 7 tekens lang is en als tweede wordt weergegeven, en op de derde positie "Pagina-ID" dat 3 tekens lang is. Deze drie ID-nummers worden samengevoegd tot een enkele reeks zonder scheidingstekens. In dit voorbeeld kan een trackingnummer er als volgt uitzien:WSL194OH08856CAS.

Misschien wilt u het klant-ID-nummer eruit halen en daarvoor kunt u de volgende substringfunctie gebruiken:

SUBSTRING("WSL194OH08856CAS",7,7)

Wetende dat het klant-ID-nummer 7 cijfers lang is en begint met de 7e positie, werkt de hierboven beschreven formule als volgt:

Misschien wilt u ook alleen de activiteits-ID hebben. Om dit te krijgen, gebruik je dezelfde functie alleen op een iets andere manier.

SUBSTRING("WSL194OH08856CAS",1,6)

Net als bij het vorige codefragment, hebben we gekeken naar dit fragment dat begint met de 1e positie en een tekenreeks van 6 tekens retourneert.

In ons laatste voorbeeld ben je misschien geïnteresseerd in Page ID, in ons geval aan het einde van de string. Hiervoor kun je de functie als volgt gebruiken:

SUBSTRING("WSL194OH08856CAS",14)

In dit voorbeeld, door het laatste argument weg te laten, beveel je de database om alles terug te geven na en inclusief het teken op de 14e positie.

Met deze functie kun je nu een string in een kolom ontleden op basis van bekende posities en lengtes van substrings die deze kan bevatten. Dit is een handige techniek om een ​​kolom op te splitsen in meerdere subtekenreeksen als die subtekenreeksen op een andere manier kunnen worden gebruikt dan het geheel van de originele tekenreeks.


  1. Stel een standaardwaarde in voor een kolom in SQLite:DEFAULT-beperking

  2. Eenvoudige SQL Server-functies om echte problemen op te lossen

  3. kan geen extensie maken zonder de rol van supergebruiker

  4. Waarom kan NULL in SQL niet overeenkomen met NULL?