Naja, du könntes mit locate auf das Vorhandensein prüfen und mit case when eine Abfragestruktur bauen
Das prüft aber nur, ob beide Trenner vorkommen. Wenn die Reihenfolge wichtig ist muss du das WHEN-Statment leicht anpassen:
in diesem Fall muss b vor c kommen.
SQL:
SELECT
CASE
WHEN LOCATE('b',num) >0 AND LOCATE('c',num) > 0
THEN SUBSTRING_INDEX(SUBSTRING_INDEX(num,'b',-1),'c',1)
ELSE ''
END AS extracted
FROM
....
Das prüft aber nur, ob beide Trenner vorkommen. Wenn die Reihenfolge wichtig ist muss du das WHEN-Statment leicht anpassen:
SQL:
SELECT
CASE
WHEN LOCATE('b',num) >0 AND LOCATE('c',num) > 0 AND LOCATE('b',num) < LOCATE('c',num)
THEN SUBSTRING_INDEX(SUBSTRING_INDEX(num,'b',-1),'c',1)
ELSE ''
END AS extracted
FROM
.....
in diesem Fall muss b vor c kommen.