Bien qu'il n'y ait pas de PATINDEX()
formel fonction dans MySQL qui réalise à la fois la recherche de modèle regex avec l'index de caractère retourné, ou une combinaison de LOCATE()
et REGEXP()
, considérez une fonction définie par l'utilisateur qui parcourt chaque caractère de la longueur d'une chaîne et vérifie un REGEXP
motif sur le personnage. Une fois créée, utilisez une telle fonction en ligne d'une requête.
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
Requête (recherche le premier chiffre de la chaîne)
SELECT mystring, PatIndex('[0-9]', mystring) As FirstNumberCharacter
FROM myTable