i am converting a sql server script where i need to convert PATINDEX() in MYSQL. would you please suggest which MYSQL function is similar to PATINDEX()
答案 0 :(得分:1)
虽然MySQL中没有正式PATINDEX()
函数可以实现带有返回字符索引的正则表达式模式查找,或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
答案 1 :(得分:0)
REGEXP_INSTR与PatIndex的功能相近,但您需要运行MySQL 8.0或更高版本才能使用它。
8.0于2018年4月发布。令人困惑的是,8.0之前发布的最后一个版本是5.7。维基百科explains why。
答案 2 :(得分:0)
这是我的解决方法:D
当INSTR([column],'[text]')> 0 THEN时按个案排序当INSTR([column],'[text]')= 0 THEN时100(//大号)END ASC