【发布时间】:2026-02-03 00:25:01
【问题描述】:
我需要创建一个以字符串为参数的 Oracle DB 函数。该字符串包含字母和数字。我需要从这个字符串中提取所有数字。例如,如果我有一个像 RO1234 这样的字符串,我需要能够使用一个函数,比如 extract_number('RO1234'),结果将是 1234。
更准确地说,这是使用此函数的 SQL 查询类型。
SELECT DISTINCT column_name, extract_number(column_name)
FROM table_name
WHERE extract_number(column_name) = 1234;
问题:如何使用 Oracle SQL Developer 或 SQLTools 客户端应用程序向我的 Oracle 数据库添加类似的功能,以便能够像上面的示例一样使用它?
【问题讨论】:
-
你可以使用内置函数
regex_replace,SELECT REGEXP_REPLACE(column_name,'[[:alpha:]]') from tbl,至少你应该在谷歌中搜索,看到这个(community.oracle.com/thread/598281)oracle社区提供了一些有用的方法 -
我可以举一个很好的例子。我不擅长甲骨文
-
“我需要从这个字符串中提取所有数字” - 如果输入字符串包含多个数字会发生什么?例如。你的函数应该为输入“1234abc5678”返回什么?
-
@FrankSchmitt,鉴于存储在该列上的值的格式,无需考虑这种可能性。
-
您的示例查询似乎有错误,即
table_name周围的单引号(也可能在column_name周围不正确)。另外,当您已经确切知道它是什么时,为什么还要在列列表中包含提取的数字,因为您已在WHERE条件中指定它?
标签: sql oracle oracle11g oracle-sqldeveloper sqltools