我使用下面的示例:
select '10+20+30'
并产生价值:
'++'
换句话说,去除任何数字并仅留下符号。
最佳答案
功能:
DROP FUNCTION IF EXISTS getMOps;
DELIMITER $$
CREATE FUNCTION getMOps
( s varchar(100)
)
RETURNS VARCHAR(100) DETERMINISTIC
BEGIN
DECLARE sOut VARCHAR(100);
DECLARE theLen,iLooper INT;
SET iLooper=1;
SET theLen=LENGTH(s);
SET sOut='';
WHILE iLooper<theLen DO
IF SUBSTR(s,iLooper,1) IN ('+','-','*','/','^') THEN
SET sOut=CONCAT(sOut,SUBSTR(s,iLooper,1));
END IF;
SET iLooper=iLooper+1;
END WHILE;
return (sOut);
END$$
DELIMITER ;
测试:
select getMOps('fish'); -- blank string
select getMOps('1+2+7-1'); -- '++-'
修改
IN
子句以适合您的口味。我相信有更好的方法。