我正在转换一个SQL Server脚本,需要在其中转换MySQL中的patindex()。请您建议哪个mysql函数类似于patindex()

最佳答案

虽然mysql中没有正式的PATINDEX()函数既可以使用返回的字符索引实现regex模式查找,也可以使用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

关于mysql - MYSQL中的PATINDEX()替换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38315658/

10-11 02:59