Meskipun tidak ada PATINDEX()
resmi fungsi di MySQL yang mencapai pencarian pola regex dengan indeks karakter yang dikembalikan, atau kombinasi LOCATE()
dan REGEXP()
, pertimbangkan fungsi Buatan Pengguna yang mengulang setiap karakter dalam panjang string dan memeriksa REGEXP
pola pada karakter. Setelah dibuat, gunakan fungsi sebaris kueri.
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
Kueri (mencari digit pertama dalam string)
SELECT mystring, PatIndex('[0-9]', mystring) As FirstNumberCharacter
FROM myTable