列に関数を使用する場合は常に、それらにエイリアスを割り当てる必要があります。これは、関数で多くの列を使用している可能性があり、MySQLは単一列の出力に使用する列を自動的に認識せず、使用した関数と同様の列名を生成するためです。
あなたが出くわした解決策は絶対に有効です。ただし、読みやすくするために、エイリアスと列名を使用することをお勧めします。
したがって、クエリは次のように読み取る必要があります:
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