Funktionen regexp_substr

Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime 11.3 LTS och senare

Returnerar den första delsträngen i str som matchar regexp.

Syntax

regexp_substr( str, regexp )

Argument

  • str: Ett STRING uttryck som ska matchas.
  • regexp: Ett STRING uttryck med ett matchande mönster.

Returer

En STRING.

regexp_substr returnerar hela delsträngen som regexp matchar, inte en enskild avbildningsgrupp. Om du vill returnera en specifik avbildningsgrupp använder du regexp_extract. Endast den första matchningen beaktas. Om du vill returnera varje matchning använder du regexp_extract_all.

Strängen regexp måste vara ett reguljärt uttryck. Se Reguljära uttryck för syntaxen som stöds.

När du använder literaler, använd raw-literal (r prefix) för att undvika förbehandling av escape-tecken.

Om str eller regexp är NULL, eller om mönstret inte hittas blir NULLresultatet .

Vanliga felvillkor

Exempel

Matcha ett av flera alternativ

Mönstret Ste(v\|ph)en matchar antingen Steven eller Stephen. Funktionen returnerar den första matchningen.

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

Extrahera det första talet från en sträng

Använd en råliteral så att \d den skickas till regex-motorn utan att dubblera omvänt snedstreck.

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

Matcha skiftlägesokänsligt

Använd infogad (?i) flagga för att ignorera skiftläge.

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

Extrahera en e-postadress

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

Extrahera den första hashtaggen

regexp_substr returnerar endast den första matchningen. Om du vill returnera varje matchning använder du regexp_extract_all.

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

Ingen matchning returnerar NULL

Till skillnad från regexp_extract, som returnerar en tom sträng, regexp_substr returneras NULL när mönstret inte hittas.

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

NULL indata returnerar NULL

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

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

Ogiltigt regexmönster

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