Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql ORA-01722:无效的数字regexp_Sql_Oracle - Fatal编程技术网

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