PostgreSQL Funkce SUBSTRING() s příkladem regulárního výrazu

⚡ Chytré shrnutí

PostgreSQL PODŘEZEC extracFunkce ts vrací část řetězce s použitím volitelné počáteční pozice a délky a také porovnává text s regulárním výrazem POSIX pro nalezení vzorů, jako jsou čísla nebo kódy.

  • ???? Syntaxe: substring(string [from start] [for length]) vrací část zdrojového řetězce.
  • 1️⃣ Pozice: Pozice znaků začínají na 1 a vynechání délky vede ke konci řetězce.
  • 🔎 Regulární výraz: SUBSTRING(řetězec Z vzoru) extracts první text odpovídající regulárnímu výrazu POSIX.
  • 🧮 Grouping: Skupina v závorkách ve vzoru vrací pouze zachycenou část shody.
  • 🖥️ pgAdmin: Každý dotaz na podřetězec se v editoru dotazů pgAdmin spouští stejným způsobem.
  • 🤖 Nápověda s umělou inteligencí: Asistenti umělé inteligence generují a vysvětlují vzory regulárních výrazů pro přesný podřetězec extracvání.

PostgreSQL Funkce SUBSTRING s regulárním výrazem

Co je to PostgreSQL Podřetězec?

Jedno PostgreSQL Funkce podřetězce vám pomůže s extract a vrátí část řetězce. Místo vrácení celého řetězce vrací pouze jeho část, což je užitečné pro ořezávání kódů a čtení polí s pevnou šířkou.

Syntax

Jedno PostgreSQL funkce podřetězec má následující syntaxi:

substring( string [from starting_position] [for length] )

parametry

S funkcí substring se používají následující parametry:

šňůra Zdrojový řetězec, jehož datový typ je varchar, char, string atd.
začáteční pozice Volitelný parametr. Označuje místo, kde se nachází extracZačne se vyplňování řetězce. Pokud tento parametr vynecháte, extracČtení začíná od pozice 1, což je první znak v řetězci.
délka Volitelný parametr. Označuje počet znaků, které mají být vybrány.tracz řetězce. Pokud tento parametr vynecháte, funkce extracts od počáteční_pozice do konce řetězce.

Příklady

V tomto příkladu chceme extracprvní 4 znaky ze slova Guru99:

SELECT substring('Guru99' for 4);

Příkaz vrátí následující:

PostgreSQL Podřetězec

Nespecifikovali jsme výchozí pozici, takže extracČást podřetězce začínající na pozici 1. Byly vynechány čtyři znakytracted vrátit výše uvedený výsledek.

Následující příklad ukazuje, jak určit počáteční pozici:

SELECT substring('Guru99' from 1 for 4);

Příkaz vrátí následující:

PostgreSQL Podřetězec

Upřesnili jsme, že extracPodřetězec by měl začínat od pozice 1 a měly by být tvořeny 4 znaky.tracted.

Pojďme extract 99 z řetězce Guru99:

SELECT substring('Guru99' from 5);

Příkaz vrátí následující:

PostgreSQL Podřetězec

Počáteční pozici jsme zadali na 5. Protože počet znaků, které mají být extracTed nebyl specifikován, extracce běžela až na konec řetězce.

Zde je další příklad:

SELECT substring('Guru99' from 5 for 2);

Příkaz vrátí následující:

PostgreSQL Podřetězec

Začali jsme s extracce na pozici 5 a 2 znaky byly vynechánytracted.

Zvažte níže uvedenou tabulku knihy:

PostgreSQL Tabulka podřetězců Kniha

Chceme získat hrubou představu o názvu každé knihy. Můžeme např.tracpouze prvních 15 znaků ze sloupce názvu v tabulce:

SELECT
   id,
   SUBSTRING(name, 1, 15 ) AS name_initial
FROM
   Book
ORDER BY
   id;

Příkaz vrátí následující:

PostgreSQL Výsledek podřetězce

Nyní máme přibližnou představu o názvu každé knihy.

Shoda podřetězců s regulárním výrazem SQL

In PostgreSQL, můžete extracpodřetězec, který odpovídá zadanému regulárnímu výrazu POSIX. V tomto případě funkce podřetězec používá následující syntaxi:

SUBSTRING(string FROM matching_pattern)

or

SUBSTRING(string, matching_pattern);

Zde je vysvětlení výše uvedených parametrů. Řetězec je zdrojový řetězec, jehož datový typ je varchar, char, string atd. Matching_pattern je vzor použitý pro vyhledávání v řetězci.

Příklady

SELECT
   SUBSTRING (
      'Your age is 22',
      '([0-9]{1,2})'
   ) as age;

Příkaz vrátí následující:

Shoda podřetězců s regulárním výrazem SQL

Náš vstupní řetězec je Váš věk je 22. Ve vzoru hledáme číselný vzor; když je nalezen, funkce podřetězce extracpouze dva znaky.

Jak porovnávat podřetězce pomocí pgAdmin

Nyní se podívejme, jak se tyto akce provádějí pomocí pgAdmin. Dotazy, které nepotřebují databázi, lze spustit přímo z okna editoru dotazů. Stačí provést následující:

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2) V pgAdminu klikněte na ikonu Dotazovacího nástroje.

Shoda podřetězců pomocí pgAdmin

Otevře se okno editoru dotazů.

Krok 3) Do okna editoru zadejte následující dotaz.

SELECT substring('Guru99' for 4);

Krok 4) Klepnutím na ikonu Provést spustíte dotaz.

Shoda podřetězců pomocí pgAdmin

Krok 5) Provedení dotazu je hotové. Mělo by se vrátit následující:

Shoda podřetězců pomocí pgAdmin

Příklad 2:

SELECT substring('Guru99' from 1 for 4);

Mělo by vrátit následující:

Shoda podřetězců pomocí pgAdmin

Zde je další příklad:

SELECT substring('Guru99' from 5);

Mělo by vrátit následující:

Shoda podřetězců pomocí pgAdmin

Příklad 3:

SELECT substring('Guru99' from 5 for 2);

Mělo by vrátit následující:

Shoda podřetězců pomocí pgAdmin

Nyní spusťte příklad s použitím tabulky Kniha ukázkové databáze:

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2) V navigačním panelu vlevo klikněte na Databáze a poté na Demo.

Shoda podřetězců pomocí pgAdmin

Krok 3) Zadejte dotaz v editoru dotazů:

SELECT
   id,
   SUBSTRING(name, 1, 15 ) AS name_initial
FROM
   Book
ORDER BY
   id;

Krok 4) Klepněte na tlačítko Spustit.

Shoda podřetězců pomocí pgAdmin

Mělo by vrátit následující:

PostgreSQL Výsledek podřetězce

Nyní máme základní představu o názvu každé knihy.

Shoda podřetězců s regulárním výrazem SQL

Chcete-li provést totéž na pgAdmin, proveďte následující:

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2) Klikněte na ikonu Dotazovacího nástroje.

Shoda podřetězců s regulárním výrazem SQL

Otevře se okno editoru dotazů.

Krok 3) Do okna editoru zadejte následující dotaz.

SELECT
   SUBSTRING (
      'Your age is 22',
      '([0-9]{1,2})'
   ) as age;

Krok 4) Klepnutím na ikonu Provést spustíte dotaz.

Shoda podřetězců s regulárním výrazem SQL

Mělo by vrátit následující:

Shoda podřetězců s regulárním výrazem SQL

Stáhněte si databázi použitou v tomto kurzu

Nejčastější dotazy

SUBSTR je kratší alias funkce SUBSTRING a vrací část řetězce. SUBSTRING také podporuje klíčová slova FROM a FOR standardu SQL a regulární výrazy POSIX, zatímco SUBSTR akceptuje pouze argumenty pozice a délky oddělené čárkami.

PostgreSQL Funkce SUBSTRING je založena na jedničce, takže první znak je na pozici 1, nikoli na 0. Předání počáteční pozice 1 vrátí řetězec od prvního znaku dále.

Pokud vzor POSIX neodpovídá ničemu, SUBSTRING vrátí NULL místo prázdného řetězce. Testování výsledku pomocí IS NULL umožňuje zpracovat řádky, kde očekávaný vzor chybí.

Použijte regulární výraz, který zachycuje, co následuje za znakem. Například SUBSTRING(email FROM '@(.*)') vrátí vše za znakem @ a uvede tak doménovou část každé e-mailové adresy.

Použijte SUBSTRING, pokud potřebujete první shodný text jako jednoduchou hodnotu. Pokud chcete, aby se všechny shody nebo více skupin zachycení vrátily jako pole, zvolte regexp_matches(), protože SUBSTRING vrací pouze první shodu.

Asistenti umělé inteligence, jako je GitHub Copilot, přemění popis v jednoduché angličtině na vzor POSIX, vysvětlí, čemu každý token odpovídá, a navrhnou testovací řetězce, což snižuje počet pokusů a omylů při sestavování podřetězců ex.tracdotazy.

Ano. Popište požadovanou část textu a asistent s umělou inteligencí vytvoří volání SUBSTRING se správnými pozicemi nebo regulárním výrazem, které můžete spustit a upřesnit v pgAdmin.

Ano, porovnávání SUBSTRING v POSIXu standardně rozlišuje velká a malá písmena. Pro porovnávání bez ohledu na velká a malá písmena použijte spodní část obou vstupů, například SUBSTRING(lower(name) FROM lower(pattern)), aby se velká a malá písmena považovala za stejná.

Shrňte tento příspěvek takto: