首页 > 数据库 > mysql教程 > 如何使用 SQL 用户定义函数从字符串中提取数字?

如何使用 SQL 用户定义函数从字符串中提取数字?

Patricia Arquette
发布: 2025-01-21 01:47:08
原创
634 人浏览过

How Can I Extract Numbers from Strings Using a SQL User-Defined Function?

使用用户定义函数从 SQL 字符串中提取数字数据

本指南演示如何创建 SQL 用户定义函数 (UDF) 以高效地从字符串中仅提取数字字符。 这是数据清理和操作中的常见任务。

创建 UDF:

以下 SQL 代码定义了一个名为 dbo.udf_GetNumeric 的 UDF,它将字符串作为输入并返回提取的数字部分:

<code class="language-sql">CREATE FUNCTION dbo.udf_GetNumeric
(
  @strAlphaNumeric VARCHAR(256)
)
RETURNS VARCHAR(256)
AS
BEGIN
    DECLARE @intAlpha INT
    SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric)
    BEGIN
        WHILE @intAlpha > 0
        BEGIN
            SET @strAlphaNumeric = STUFF(@strAlphaNumeric, @intAlpha, 1, '' )
            SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric )
        END
    END
    RETURN ISNULL(TRIM(@strAlphaNumeric), '0')
END</code>
登录后复制

应用 UDF:

创建 UDF 后,使用以下 SELECT 语句将其应用到表中的列:

<code class="language-sql">SELECT dbo.udf_GetNumeric(column_name) AS ExtractedNumber
FROM table_name;</code>
登录后复制

column_name 替换为包含字符串的列的实际名称,将 table_name 替换为表的名称。 结果将是一个新列 ExtractedNumber,仅包含数值。

示例:

考虑这个示例数据:

String 1 String 2 String 3
003Preliminary Examination Plan Coordination005 Balance1000sheet

应用 UDF 后,输出将是:

String 1 String 2 String 3
003 005 1000

功能说明:

dbo.udf_GetNumeric 函数使用 PATINDEX 来定位第一个非数字字符。 然后 STUFF 函数删除该字符。重复此过程,直到消除所有非数字字符,只留下数字。 ISNULLTRIM 函数处理潜在的空值和前导/尾随空格。

进一步增强(未来更新):将在未来的更新中添加对此功能的更详细说明和潜在改进。

以上是如何使用 SQL 用户定义函数从字符串中提取数字?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板