Въпреки че няма формален PATINDEX()
функция в MySQL, която постига както търсенето на модел на регулярни изрази с върнатия символен индекс, така и комбинация от LOCATE()
и REGEXP()
, разгледайте дефинирана от потребителя функция, която преминава през всеки знак в дължината на низ и проверява REGEXP
модел върху характера. След като бъде създадена, използвайте такава функция в рамките на заявка.
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
Заявка (търси първата цифра в низа)
SELECT mystring, PatIndex('[0-9]', mystring) As FirstNumberCharacter
FROM myTable