开发者社区> 问答> 正文

如何从MySQL中的字符串仅获取数字??mysql

我有一些包含字母数字值的字符串输出。我只想从该字符串中获取数字。如何通过查询获取?我可以使用哪个MySql函数?

我的查询就像:

select DISTINCT SUBSTRING(referrerURL,71,6)
from hotshotsdblog1.annonymoustracking
where advertiserid = 10 limit 10; 输出:

100683 101313 19924& 9072&h 12368& 5888&h 10308& 100664 1&hash 101104 我想要输出像:

100683 101313 19924 9072 12368 5888 10308 100664 1 101104

展开
收起
保持可爱mmm 2020-05-17 14:17:49 725 0
1 条回答
写回答
取消 提交回答
  • 如果字符串以数字开头,然后包含非数字字符,则可以使用该CAST()函数,或者通过添加一个将其隐式转换为数字0:

    SELECT CAST('1234abc' AS UNSIGNED); -- 1234 SELECT '1234abc'+0; -- 1234 要从任意字符串中提取数字,您可以添加一个自定义函数,如下所示:

    DELIMITER $$

    CREATE FUNCTION ExtractNumber(in_string VARCHAR(50)) RETURNS INT NO SQL BEGIN DECLARE ctrNumber VARCHAR(50); DECLARE finNumber VARCHAR(50) DEFAULT ''; DECLARE sChar VARCHAR(1); DECLARE inti INTEGER DEFAULT 1;

    IF LENGTH(in_string) > 0 THEN
        WHILE(inti <= LENGTH(in_string)) DO
            SET sChar = SUBSTRING(in_string, inti, 1);
            SET ctrNumber = FIND_IN_SET(sChar, '0,1,2,3,4,5,6,7,8,9'); 
            IF ctrNumber > 0 THEN
                SET finNumber = CONCAT(finNumber, sChar);
            END IF;
            SET inti = inti + 1;
        END WHILE;
        RETURN CAST(finNumber AS UNSIGNED);
    ELSE
        RETURN 0;
    END IF;    
    

    END$$

    DELIMITER ; 定义函数后,您可以在查询中使用它:

    SELECT ExtractNumber("abc1234def") AS number; -- 1234来源:stack overflow

    2020-05-17 14:18:49
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像