Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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
Plsql 如何解析空值?_Plsql - Fatal编程技术网

Plsql 如何解析空值?

Plsql 如何解析空值?,plsql,Plsql,我有一个管道分隔文件(3个管道),它也有空值。如何从本例中提取包含空值的数据 with data as ( select 'Abc|||KXG||||||CCC|||5/12/2014 12:12:22,DDD,EEE,FFF' str from dual) select REGEXP_SUBSTR (str, '([^|||]*)||| |$', 1, 3, NULL, 1 ) from data; 如果您预先编写了| | |,那么您可以使用 ((|||)([^|]*)){5} 并捕

我有一个管道分隔文件(3个管道),它也有空值。如何从本例中提取包含空值的数据

with data as

( select 'Abc|||KXG||||||CCC|||5/12/2014 12:12:22,DDD,EEE,FFF' str from dual)

select REGEXP_SUBSTR (str, '([^|||]*)||| |$', 1, 3, NULL, 1 )  from data;

如果您预先编写了
| | |
,那么您可以使用

((|||)([^|]*)){5}
并捕获每第三组?

给你:

SQL> with tbl(str) as (
  2    select 'Abc|||KXG||||||CCC|||5/12/2014 12:12:22,DDD,EEE,FFF' from dual
  3  )
  4  select COLUMN_VALUE field_nbr, REGEXP_SUBSTR( str ,'(.*?)(\|\|\||$)', 1, COLUMN_VALUE, NULL, 1 ) AS match_value
  5        FROM   tbl,
  6               TABLE(
  7                 CAST(
  8                   MULTISET(
  9                     SELECT LEVEL
 10                     FROM   DUAL
 11                     CONNECT BY LEVEL <= REGEXP_COUNT( str ,'\|\|\|' )+1
 12                   ) AS SYS.ODCINUMBERLIST
 13                 )
 14               );

 FIELD_NBR MATCH_VALUE
---------- ---------------------------------------------------
         1 Abc
         2 KXG
         3
         4 CCC
         5 5/12/2014 12:12:22,DDD,EEE,FFF

SQL>
SQL>以tbl(str)作为(
2从双通道中选择“Abc | | | | | KXG | | | | | | | CCC | | | 5/12/2014 12 12:12:22,DDD,EEE,FFF”
3  )
4选择列\u值字段\u nbr、REGEXP\u SUBSTR(str,(.*)(\\\\\\\\\\\\\\\\\\\\\\\\\\$)',1,列\u值,NULL,1)作为匹配值
5来自tbl,
6表(
7投(
8多集(
9选择级别
双程10分
11按级别连接

PL/SQL regex有多标准?请在我的示例中使用您的建议,告诉我如何从字符串中提取第三个空值?我尝试了您的代码,但它不起作用。我问您标准的
PL/SQL
regex有多标准。您没有回答。我不知道
PL/SQL
,但我知道regex.regex通常都有一些g称为“捕获组”这些组的值可以按顺序提取和使用。我知道如何在
Java
Vi
和Unix power tools中这样做。如果
PL/SQL
是标准的,它将有一些方法来实现。是的,它非常标准,并且经常使用。我正在使用PLSQL完成此任务。我用REG_EXP查找捕获组。但是这不是我想要的答案…谢谢你抽出时间。