Setiap kali Anda menggunakan fungsi untuk kolom, Anda harus menetapkannya sebagai alias. Alasan untuk ini adalah karena Anda mungkin menggunakan banyak kolom dalam fungsi tersebut, dan MySQL tidak akan secara otomatis mengetahui mana yang akan digunakan untuk output kolom tunggal, dan itu akan menghasilkan nama kolom yang mirip dengan fungsi yang Anda gunakan.
Solusi yang Anda temukan benar-benar valid. Namun untuk tujuan keterbacaan, disarankan menggunakan alias dan nama kolom.
Jadi kueri Anda seharusnya berbunyi seperti ini:
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