you can create functions like this:https://dba.stackexchange.com/questions/106535/how-to-split-numbers-and-text-in-mysql
With some modifications for pre and post
DROP function IF EXISTS `pre`;
DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `pre`(
vStr CHAR(75)) RETURNS char(32) CHARSET latin1
BEGIN
DECLARE vInd, vLen SMALLINT DEFAULT 1;
DECLARE vReturn CHAR(32) DEFAULT '';
DECLARE vCharacter CHAR(1);
REPEAT
SET vLen = CHAR_LENGTH(vStr);
BEGIN
SET vCharacter = MID(vStr,1,1);
IF vCharacter REGEXP '[[:digit:]|[:punct:]]' THEN
SET vReturn:=NULL;
RETURN vReturn;
ELSE
SET vCharacter = MID(vStr,vInd,1);
IF vCharacter REGEXP '[[:alpha:]]' THEN
SET vReturn=CONCAT(vReturn,vCharacter);
SET vInd =vInd+1;
ELSE
SET vInd:=vLen+1;
END IF;
END IF;
END;
UNTIL vInd > vLen END REPEAT;
RETURN vReturn;
END$$
DELIMITER ;
DROP function IF EXISTS `post`;
DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `post`(
vStr CHAR(75)) RETURNS char(32) CHARSET latin1
BEGIN
DECLARE vInd,limite, vLen SMALLINT DEFAULT 1;
DECLARE vReturn CHAR(32) DEFAULT '';
DECLARE vCharacter CHAR(1);
SET vInd = 1;
SET vLen = CHAR_LENGTH(vStr);
SET limite=vLen;
REPEAT
BEGIN
SET vCharacter = MID(vStr,vLen,1);
IF vCharacter REGEXP '[[:digit:]|[:punct:]]' THEN
SET vReturn:=NULL;
RETURN vReturn;
ELSE
SET vCharacter = MID(vStr,vLen-vInd+1,1);
IF vCharacter REGEXP '[[:alpha:]]' THEN
SET vReturn=CONCAT(vCharacter,vReturn);
SET vInd=vInd+1;
ELSE
SET vInd=limite+1;
END IF;
END IF;
END;
UNTIL vInd > limite END REPEAT;
RETURN vReturn;
END$$
DELIMITER ;
And query:
SELECT identifier,pre(identifier) as pre,num(identifier) as num,post(identifier) as post FROM table