जबकि कोई औपचारिक 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