MID: from Tableau to SQL

Returns a substring starting at a one-based position. Below, 8 sample rows go through the calculation and through the SQL, and both return the same numbers.

Calculated field

MID([label], 2, 4)

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 substr(label,2,4) AS result FROM input

Runs the example above.

Result

result
ced
RCHI
aple
illo
irch
ine/
sh
null

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

Where a naive translation goes wrong

  • Replacing MID with substr(label,3,4) changes the shown values or null handling.

    Naive SQL

    SELECT substr(label,3,4) AS result FROM input
    result
    ceda
    CHID
    ple-
    llow
    rch-
    ne/s
    h
    null

    Matches the calculation

    SELECT substr(label,2,4) AS result FROM input
    result
    ced
    RCHI
    aple
    illo
    irch
    ine/
    sh
    null

Signature

MID(string, start, [length])