我使用下面的示例:

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子句以适合您的口味。我相信有更好的方法。

09-27 22:31