Ogni volta che usi le funzioni per le colonne, devi assegnare loro un alias. La ragione di ciò è perché potresti utilizzare molte colonne nella funzione e MySQL non saprà automaticamente quale utilizzare per l'output di una singola colonna e ti genererebbe un nome di colonna simile alla funzione che hai utilizzato.
La soluzione in cui ti sei imbattuto è assolutamente valida. Tuttavia, per motivi di leggibilità, si consiglia di utilizzare alias e nomi di colonna.
Quindi la tua richiesta dovrebbe essere letta come tale:
SELECT
SUBSTRING(LEFT(configuration,
LOCATE('abhol_firma', configuration) - 30),
LOCATE('treuhand_betrag', configuration) + 22,
100) as configuration /* note the alias here */
FROM
tl_iso_product_collection_item
WHERE
LOCATE('abhol_firma', configuration) > 0
AND LOCATE('treuhand_betrag', configuration) > 0
ORDER BY id DESC
LIMIT 1