Während es kein formelles PATINDEX()
gibt Funktion in MySQL, die sowohl die Regex-Mustersuche mit zurückgegebenem Zeichenindex als auch eine Kombination aus LOCATE()
erreicht und REGEXP()
, stellen Sie sich eine benutzerdefinierte Funktion vor, die jedes Zeichen in der Länge einer Zeichenfolge durchläuft und einen REGEXP
überprüft Muster auf dem Charakter. Verwenden Sie nach der Erstellung eine solche Funktion innerhalb einer Abfrage.
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
Abfrage (sucht nach der ersten Ziffer in der Zeichenfolge)
SELECT mystring, PatIndex('[0-9]', mystring) As FirstNumberCharacter
FROM myTable