Function table / Strings / REGEXP_EXTRACT_NTH

REGEXP_EXTRACT_NTH: from Tableau to SQL

Returns the requested regular-expression capture group. Below, 8 sample rows go through the calculation and through the SQL, and both return the same numbers.

Calculated field

REGEXP_EXTRACT_NTH([label], '(birch)-(birch)', 2)

Sample data

labelquantityamountflag
cedar cedar 6512.8True
ORCHID-west66-7.6False
maple-east670null
willow north6825.3True
birch-birch694.9False
pine/south70-1.2null
ash719True
nullnullnullnull

The same calculation as SQL

SELECT nullif(regexp_extract(label,'(birch)-(birch)',2),'') AS result FROM input

Runs the example above.

Result

result
null
null
null
null
birch
null
null
null

Same rows from the calculation and from the SQL in DuckDB.

Where a naive translation goes wrong

  • Replacing REGEXP_EXTRACT_NTH with regexp_extract(label,'(birch)-(birch)',2) changes the shown values or null handling.

    Naive SQL

    SELECT regexp_extract(label,'(birch)-(birch)',2) AS result FROM input
    result
    birch
    null

    Matches the calculation

    SELECT nullif(regexp_extract(label,'(birch)-(birch)',2),'') AS result FROM input
    result
    null
    null
    null
    null
    birch
    null
    null
    null

Signature

REGEXP_EXTRACT_NTH(string, constant_pattern, group)