Anche se non esiste un PATINDEX()
formale funzione in MySQL che ottiene sia la ricerca del modello regex con l'indice dei caratteri restituito, sia una combinazione di LOCATE()
e REGEXP()
, considera una funzione definita dall'utente che scorre ogni carattere nella lunghezza di una stringa e controlla un REGEXP
motivo sul personaggio. Una volta creata, usa tale funzione in linea di una query.
DROP FUNCTION IF EXISTS PatIndex;
DELIMITER $$
CREATE FUNCTION PatIndex(pattern VARCHAR(255), tblString VARCHAR(255)) RETURNS INTEGER
DETERMINISTIC
BEGIN
DECLARE i INTEGER;
SET i = 1;
myloop: WHILE (i <= LENGTH(tblString)) DO
IF SUBSTRING(tblString, i, 1) REGEXP pattern THEN
RETURN(i);
LEAVE myloop;
END IF;
SET i = i + 1;
END WHILE;
RETURN(0);
END
Interroga (cerca la prima cifra nella stringa)
SELECT mystring, PatIndex('[0-9]', mystring) As FirstNumberCharacter
FROM myTable