Hola Arturo
Puedes crear un procedimiento almacenado o una función externa, dll en algún lenguaje.
No tengo ahora el Firebird instalado, pero el procedimiento sería algo así:
SET TERM ^ ;
CREATE PROCEDURE StrExtract(cTexto VARCHAR(100)
, cDelimIni CHAR(1)
, cDelimFin CHAR(1)
)
RETURNS (cStrExtract VARCHAR(20))
AS
DECLARE nPosIni INTEGER;
DECLARE nPosFin INTEGER;
DECLARE nKntCar INTEGER;
BEGIN
cStrExtract = ''
nPosIni = POSITION(cDelimIni, cTexto);
nPosFin = POSITION(cDelimFin, cTexto);
IF (nPosIni > 0) THEN
BEGIN
IF (nPosFin > nPosIni) THEN
BEGIN
nKntCar = nPosFin - nPosIni - 1;
cStrExtract = SUBSTRING(cTexto, nPosIni + 1, nKntCar);
END
ELSE
cStrExtract = SUBSTRING(cTexto, nPosIni + 1);
END
SUSPEND;
END
^
SET TERM ;
Queda a tu cargo las correcciones de los errores de sintaxis que pudieran haber.