使用用户定义函数从 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
函数删除该字符。重复此过程,直到消除所有非数字字符,只留下数字。 ISNULL
和 TRIM
函数处理潜在的空值和前导/尾随空格。
进一步增强(未来更新):将在未来的更新中添加对此功能的更详细说明和潜在改进。
以上是如何使用 SQL 用户定义函数从字符串中提取数字?的详细内容。更多信息请关注PHP中文网其他相关文章!