正式なPATINDEX()
はありませんが 返された文字インデックスを使用した正規表現パターンルックアップ、またはLOCATE()
の組み合わせの両方を実現するMySQLの関数 および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