我正在转换一个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/