sql >> Databáze >  >> RDS >> PostgreSQL

Jak používat funkci Substring v PostgreSQL a Redshift

Někdy může řetězec ve vaší databázi obsahovat nějaké informace vložené do tohoto řetězce jako podřetězec. Tento řetězec může být ID číslo, které může existovat v aktivitě nebo sledovacím čísle na webu vaší společnosti.

Zde je příklad, kdy společnost, která monitoruje aktivitu návštěvnosti webových stránek, má specifickou konvenci pojmenování pro ID sledování aktivity. Konvence pojmenování je „ID aktivity“, které má 6 znaků a na první pozici „ID zákazníka“, které má 7 znaků a objevuje se jako druhé, a na třetí pozici „ID stránky“, které je dlouhé 3 znaky. Tato tři ID čísla jsou složena do jednoho řetězce bez dělících znaků. V tomto příkladu může číslo zásilky vypadat takto:WSL194OH08856CAS.

Možná budete chtít vytáhnout číslo zákazníka a k tomu můžete použít následující funkci podřetězce:

SUBSTRING("WSL194OH08856CAS",7,7)

Vzhledem k tomu, že identifikační číslo zákazníka je dlouhé 7 číslic a začíná sedmou pozicí, výše uvedený vzorec funguje takto:

Možná budete chtít mít pouze ID aktivity. Abyste toho dosáhli, použijete stejnou funkci jen trochu jiným způsobem.

SUBSTRING("WSL194OH08856CAS",1,6)

Stejně jako předchozí úryvek kódu jsme se podívali, že tento bude začínat 1. pozicí a vrací řetězec, který trvá 6 znaků.

V našem posledním příkladu by vás mohlo zajímat ID stránky, které je v našem případě na konci řetězce. K tomu můžete použít funkci takto:

SUBSTRING("WSL194OH08856CAS",14)

V tomto příkladu vynecháním posledního argumentu přikazujete databázi, aby vám vrátila vše po znaku na 14. pozici včetně.

Pomocí této funkce můžete nyní analyzovat řetězec ve sloupci na základě známých pozic a délek podřetězců, které může obsahovat. Toto je užitečná technika pro rozdělení sloupce na více podřetězců, pokud lze tyto podřetězce použít jiným způsobem než celý původní řetězec.


  1. PostgreSQL anonymizace na vyžádání

  2. Jak zkontrolovat, zda existuje databáze na serveru SQL?

  3. Musí být deklarován identifikátor PLS-00201 'PACKAGENAME.PROCEDURENAME'

  4. Jak naplnit ListView db ve složce aktiv?