Sql ORA-01722:无效的数字regexp
我有以下代码:Sql ORA-01722:无效的数字regexp,sql,oracle,Sql,Oracle,我有以下代码: WITH aux ( str ) AS ( SELECT 'A b s d' FROM dual ) SELECT regexp_substr(str, 'a', 'n') reg FROM aux; 但是,我遇到了以下错误: ORA-01722: invalid number 01722. 00000 - "invalid number" *Cause: The
WITH aux ( str ) AS (
SELECT
'A b s d'
FROM
dual
)
SELECT
regexp_substr(str, 'a', 'n') reg
FROM
aux;
但是,我遇到了以下错误:
ORA-01722: invalid number
01722. 00000 - "invalid number"
*Cause: The specified number was invalid.
*Action: Specify a valid number.
我当前的数字字符配置是
SELECT
*
FROM
nls_session_parameters
WHERE
parameter = 'NLS_NUMERIC_CHARACTERS';
regexp\u substr()
的第三个参数是一个数字,用于指定开始搜索的位置
如果试图指定match_参数()
,则需要指定所有五个参数:
regexp_substr(str, 'a', 1, 1, 'n') as reg
因为函数的第三个参数应该是numeric,所以这里需要
REGEXP\u REPLACE
,而不是REGEXP\u SUBSTR
。但也许你甚至不需要一个正则表达式替换。我认为这是一个典型的问题,在目前的形式,因此没有试图回答。
regexp_substr(str, 'a', 1, 1, 'n') as reg