Bất cứ khi nào bạn sử dụng các hàm cho các cột, bạn cần gán cho chúng một bí danh. Lý do cho điều này là vì bạn có thể đang sử dụng nhiều cột trong hàm và MySQL sẽ không tự động biết cột nào được sử dụng cho đầu ra cột đơn và nó sẽ tạo cho bạn một tên cột tương tự như hàm bạn đã sử dụng.
Giải pháp mà bạn đã xem qua là hoàn toàn hợp lệ. Tuy nhiên, vì mục đích dễ đọc, nên sử dụng bí danh và tên cột.
Vì vậy, truy vấn của bạn nên đọc như sau:
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