regexp_substr-functie

Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 11.3 LTS en hoger

Retourneert de eerste subtekenreeks in str die overeenkomsten regexp.

Syntaxis

regexp_substr( str, regexp )

Argumenten

  • str: Een STRING expressie die moet worden vergeleken.
  • regexp: Een STRING expressie met een overeenkomend patroon.

Retouren

A STRING.

regexp_substr retourneert de volledige subtekenreeks die regexp overeenkomt met, niet een afzonderlijke capture-groep. Als u een specifieke capturegroep wilt retourneren, gebruikt u regexp_extract. Alleen de eerste overeenkomst wordt overwogen. Als u elke overeenkomst wilt retourneren, gebruikt u regexp_extract_all.

De regexp tekenreeks moet een reguliere expressie zijn. Zie Reguliere expressies voor de ondersteunde syntaxis.

Wanneer u letterlijke gegevens gebruikt, gebruikt raw-literal u (r voorvoegsel) om voorverwerking van escape-tekens te voorkomen.

Als str of regexp is NULL, of het patroon niet wordt gevonden, is NULLhet resultaat .

Algemene foutvoorwaarden

Voorbeelden

Een van de verschillende alternatieven vergelijken

Het patroon Ste(v\|ph)en komt overeen met Steven of Stephen. De functie retourneert de eerste overeenkomst.

> SELECT regexp_substr('Steven Jones and Stephen Smith are the best players', r'Ste(v|ph)en');
 Steven

Het eerste getal uit een tekenreeks extraheren

Gebruik een letterlijke letterlijke onbewerkte gegevens die worden doorgegeven aan de regex-engine \d zonder de backslash te verdubbelen.

> SELECT regexp_substr('item 42 costs $19', r'\d+');
 42

Niet hoofdlettergevoelig vergelijken

Gebruik de (?i) inlinevlag om hoofdletters en kleine letters te negeren.

> SELECT regexp_substr('Error: disk full', r'(?i)error');
 Error

Een e-mailadres extraheren

> SELECT regexp_substr('Contact alice@example.com for details', r'\w+@\w+\.\w+');
 alice@example.com

Pak de eerste hashtag uit

regexp_substr retourneert alleen de eerste overeenkomst. Als u elke overeenkomst wilt retourneren, gebruikt u regexp_extract_all.

> SELECT regexp_substr('Posts tagged #data #ai #sql', r'#\w+');
 #data

Geen overeenkomst retourneert NULL

In tegenstelling tot regexp_extract, die een lege tekenreeks retourneertNULL, regexp_substr wordt geretourneerd wanneer het patroon niet wordt gevonden.

> SELECT regexp_substr('Mary had a little lamb', r'Ste(v|ph)en');
 NULL

NULL invoer retourneert NULL

> SELECT regexp_substr(NULL, r'Ste(v|ph)en');
 NULL

> SELECT regexp_substr('Mary had a little lamb', NULL);
 NULL

Ongeldig regex-patroon

> SELECT regexp_substr('abc', '[invalid');
  Error: INVALID_PARAMETER_VALUE.PATTERN