返回顶部
首页 > 资讯 > 数据库 >MySql 字符串中提取数字
  • 435
分享到

MySql 字符串中提取数字

mysql数据库 2023-08-31 08:08:41 435人浏览 薄情痞子
摘要

一、前言 在Mysql中,有时需要从字符串中提取数字。在这种情况下,我们可以使用一些函数来实现该效果。但是,这些函数中的一些可能会提取字符串中的所有数字,而其他函数可能只会提取最长的数字字符序列。因此,我们需要了解每个函数的行为及其应用场景

一、前言

Mysql中,有时需要从字符串中提取数字。在这种情况下,我们可以使用一些函数来实现该效果。但是,这些函数中的一些可能会提取字符串中的所有数字,而其他函数可能只会提取最长的数字字符序列。因此,我们需要了解每个函数的行为及其应用场景。

二、mysql 内置函数

1. REGEXP_REPLACE()函数

REGEXP_REPLACE()函数可以用于从字符串中删除任何不是数字的字符,留下数字字符。以下是一个例子:

SELECT REGEXP_REPLACE("abc123Def456", '[^0-9]', '');// Output: 123456

其中的正则表达式[^0-9]表示是否出现除0-9以外的字符,替换掉原来的字符串中的所有非数字字符。

2. REGEXP_SUBSTR()函数

REGEXP_SUBSTR()函数可以用于从字符串中提取匹配正则表达式的字串。以下是一个例子:

SELECT REGEXP_SUBSTR("name123_phone456", '[0-9]+');// Output: 123

其中的正则表达式[0-9]+表示会选择字符串中的一个或多个数字。

3. SUBSTRING()函数结合正则表达式

另一种方法是使用SUBSTRING()函数和正则表达式,可以从字符串中提取数字序列。以下是一个例子:

SELECT SUBSTRING("abc123def456",LOCATE("123", "abc123def456"),     LOCATE("456", "abc123def456")-LOCATE("123", "abc123def456")+1);// Output: 123def456

其中LOCATE()函数用于找到字符串中某个子字符串的位置,然后使用SUBSTRING()函数从该位置开始提取包含在“123”和“456”之间的字符串。如果你想要提取数字序列,请使用正则表达式。

三、自定义函数

下面是一个基于循环的Mysql自定义函数,用于从输入的字符串中提取所有数字字符并将其组合成一个整数:

一、函数1

DROP FUNCTION IF EXISTS `number_extract`;DELIMITER $$CREATE FUNCTION `number_extract`(string_inport VARCHAR(255)) RETURNS INTNO SQLBEGIN    DECLARE ctrNumber VARCHAR(255);    DECLARE finNumber VARCHAR(255) DEFAULT '';    DECLARE sChar VARCHAR(1);    DECLARE inti INTEGER DEFAULT 1;    IF LENGTH(string_inport) > 0 THEN        WHILE(inti <= LENGTH(string_inport)) DO            SET sChar = SUBSTRING(string_inport, 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 ;

该函数接受一个VARCHAR(255)类型的字符串参数,并返回一个整数值。函数使用了一个while循环来遍历字符串中的每个字符。如果字符是数字,则将其添加到finNumber字符串中。在循环结束后,使用MySQL内置的CAST()函数将finNumber字符串转换为整数类型。

二、函数2

如果需要从输入的字符串中提取特定数量的连续数字字符并将其组合成一个整数,我们可以使用两个自定义函数。

DROP FUNCTION IF EXISTS `number_extract_n1`;DELIMITER $$CREATE FUNCTION `number_extract_n1`(string_inport VARCHAR(255), num_digits INT) RETURNS INTNO SQLBEGIN    DECLARE ctrNumber VARCHAR(255);    DECLARE finNumber VARCHAR(255) DEFAULT '';    DECLARE sChar VARCHAR(1);    DECLARE inti INTEGER DEFAULT 1;    IF LENGTH(string_inport) > 0 AND num_digits > 0 THEN        WHILE(inti <= LENGTH(string_inport)) DO            SET sChar = SUBSTRING(string_inport, 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);                IF LENGTH(finNumber) = num_digits THEN                    SET inti = LENGTH(string_inport)+1;                END IF;            END IF;            SET inti = inti + 1;        END WHILE;        RETURN CAST(finNumber AS UNSIGNED);    ELSE        RETURN 0;    END IF;    END$$DELIMITER ;

该函数接受两个参数,一个VARCHAR(255)类型的字符串和一个INT类型的数字。函数返回一个整数,该整数由输入字符串中的指定数量的连续数字字符组成。

函数遍历输入的字符串并扫描每个字符,如果字符是数字,则将其添加到finNumber字符串中。在finNumber中包含所需数量的数字字符时,函数将循环终止并返回finNumber转换为整数类型的值。

三、函数3

DROP FUNCTION IF EXISTS `number_extract_n2`;DELIMITER $$CREATE FUNCTION `number_extract_n2`(string_inport VARCHAR(255), start_idx INT, num_digits INT) RETURNS INTNO SQLBEGIN    DECLARE ctrNumber VARCHAR(255);    DECLARE finNumber VARCHAR(255) DEFAULT '';    DECLARE sChar VARCHAR(1);    DECLARE inti INTEGER DEFAULT start_idx;    DECLARE end_idx INTEGER DEFAULT start_idx + num_digits;    IF LENGTH(string_inport) > 0 AND num_digits > 0 AND end_idx <= LENGTH(string_inport) THEN        WHILE(inti <= end_idx) DO            SET sChar = SUBSTRING(string_inport, 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);            ELSE                RETURN 0;            END IF;            SET inti = inti + 1;        END WHILE;        RETURN CAST(finNumber AS UNSIGNED);    ELSE        RETURN 0;    END IF;    END$$DELIMITER ;

该函数接受三个参数,一个VARCHAR(255)类型的字符串,一个INT类型的数字表示起始索引值,一个INT类型的数字表示要提取的数字字符的数量。

函数遍历输入字符串的子字符串,并扫描每个字符,如果字符是数字,则将其添加到finNumber字符串中。如果finNumber包含所需数量的数字字符,则函数将返回finNumber字符串转换为整数类型的值。如果没有提取到足够数量的连续数字字符,函数将返回0。

 四、后语

我们介绍了三个自定义函数以及MySQL内置函数REGEXP_REPLACE()、REGEXP_SUBSTR()和SUBSTRING(),这些函数可以从输入的字符串中提取数字。我们还了解了每个函数的行为及其应用场景。

REGEXP_REPLACE()函数可用于从字符串中删除任何不是数字的字符,留下数字字符。

REGEXP_SUBSTR()函数可用于从字符串中提取匹配正则表达式的字串。

SUBSTRING()函数结合正则表达式可以从字符串中提取数字序列。

自定义函数1可以从字符串中提取所有数字字符并将其组合成一个整数。

自定义函数2和3可用于从输入的字符串中提取连续数字字符,并将其组合成一个指定数量的整数。

选择适当的函数来提取数字字符是十分重要的,取决于我们需要哪些数字字符以及是否必须是连续的数字字符。在实际应用中,应该根据实际情况进行选择,以便快速高效地实现所需的结果。

来源地址:https://blog.csdn.net/lijie0213/article/details/131425211

您可能感兴趣的文档:

--结束END--

本文标题: MySql 字符串中提取数字

本文链接: https://lsjlt.com/news/384741.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySql 字符串中提取数字
    一、前言 在MySQL中,有时需要从字符串中提取数字。在这种情况下,我们可以使用一些函数来实现该效果。但是,这些函数中的一些可能会提取字符串中的所有数字,而其他函数可能只会提取最长的数字字符序列。因此,我们需要了解每个函数的行为及其应用场景...
    99+
    2023-08-31
    mysql 数据库
  • db2怎么提取字符串中数字
    在DB2中,可以使用正则表达式来提取字符串中的数字。以下是一个示例SQL查询,用于提取包含数字的字符串: SELECT RE...
    99+
    2024-04-02
  • java提取字符串中的数字string,获取字符串中的整数或小数
    方法一:提取字符串中的数字 // 提取字符串中的数字 public static String extractNumbers(String input) { return input.replaceAll("[^0-9]...
    99+
    2023-08-16
    java 开发语言 jvm
  • java怎么提取字符串中的数字
    要提取字符串中的数字,可以使用正则表达式或循环遍历字符串的方法。 方法一:使用正则表达式 import java.util.rege...
    99+
    2023-10-22
    java
  • qt怎么提取字符串中的数字
    在Qt中,可以使用正则表达式来提取字符串中的数字。以下是一个示例代码:```cpp#include #include int mai...
    99+
    2023-08-12
    qt
  • 怎么用python提取字符串中的数字
    这篇“怎么用python提取字符串中的数字”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用python提取字符串中的数字...
    99+
    2023-06-29
  • python如何提取字符串的数字
    可以使用正则表达式来提取字符串中的数字。 import re def extract_numbers(string): n...
    99+
    2024-02-29
    python
  • Mysql字符串截取及获取指定字符串中的数据
    前言:本人遇到一个需求,需要在MySql的字段中截取一段字符串中的特定字符,类似于正则表达式的截取,苦于没有合适的方法,百度之后终于找到一个合适的方法:substring_index('www.sqlstu...
    99+
    2024-04-02
  • 如何在mysql字符串中提取相应字段
    从 mysql 字符串中提取特定字段:确定目标字段。使用正则表达式 regexp_extract() 匹配字段。使用子查询提取字段。使用字符串函数 substring() 和 ...
    99+
    2024-06-15
    mysql
  • 如何在 PHP 中从字符串中提取数字
    在本文中,我们将介绍在 PHP 中从字符串中提取数字的方法。 使用 preg_match_all() 函数的方法 使用 filter_variable() 函数 使用 preg...
    99+
    2024-02-27
  • mysql怎么获取字符串中是数字
    在mysql中获取字符串中数字的方法具体方法如下:#获取字符串中的数字create function dbo.F_Get_Number (@S varchar(100))returns intASbeginwhile PATIND...
    99+
    2024-04-02
  • mysql怎么截取字符串中的数字
    如果你想从字符串中提取数字,可以使用MySQL中的正则表达式函数来实现。以下是一个示例: 假设有一个包含数字和其他字符的字符串abc...
    99+
    2024-04-17
    mysql
  • Pattern.compile函数提取字符串中指定的字符(推荐)
      最近有个需求是要提取一段字符串中特定范围内的内容,查找资料后,使用的是Java中的Pattern.compile函数来实现对指定字符串的截取。记录下来查找的知...
    99+
    2022-12-28
    Pattern.compile函数提取字符串指定字符 Pattern.compile函数语法
  • 如何使用Python从字符串中提取数字?
    在Python中,有时候需要从字符串中提取特定的数字信息,这种操作很常见。例如,从一篇新闻报道中提取新闻发布日期、从一篇小说中提取章节编号等。那么,如何使用Python从字符串中提取数字呢?本文将介绍几种方式。 阅读更多:Python...
    99+
    2023-08-31
    mysql 数据库 python
  • c语言如何提取字符串中的数字
    在C语言中,可以使用isdigit函数和atoi函数来提取字符串中的数字。isdigit函数用于判断一个字符是否为数字字符,其原型如...
    99+
    2023-09-16
    c语言
  • 如何利用python提取字符串中的数字
    目录一、isdigit()函数二、filter() 函数三、提取一段字符串中的数字四、匹配指定字符串开头的数字五、匹配时间,17:35:24六、匹配时间,20181011 15:28...
    99+
    2024-04-02
  • 详解Python3中字符串中的数字提取方法
    逛到一个有意思的博客在里面看到一篇关于ValueError: invalid literal for int() with base 10错误的解析,针对这个错误,博主已经给出解决办法,使用的是re.sub...
    99+
    2022-06-04
    字符串 详解 数字
  • python怎么提取字符串中的文字
    Python可以使用正则表达式或者字符串处理函数来提取字符串中的文字。以下是两种常见的方法:1. 使用正则表达式:可以使用`re`模...
    99+
    2023-08-26
    python
  • Python实现对字符串中字符提取校验
    众所周知,python之所以很方便在一定程度上是因为随时都可能有人又创作了一个好用又方便的python非标准库。 正好有一个小需求需要校验一个python字符串中是否存在某种类型的字...
    99+
    2024-04-02
  • java如何提取字符串中的指定字符
    您可以使用Java中的字符串处理方法来提取字符串中的指定字符。以下是一种常见的方法:1. 使用String类的charAt()方法,...
    99+
    2023-09-22
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作