2017-04-12 100 views
1

有什么方法可以读取新行出现在返回值中的次数?我试过regexp_count(),但\n只计算n在返回值中出现的次数。计算新的一行/行的出现次数出现

SELECT REGEXP_COUNT(DATA, '\n', 1, 'i') , _DATA FROM DATA_TABLE ; 

下面的示例应返回3

ABCSLLA 
AAANN 
SDSDS 
+0

这是一个结果集,对吧?结果集中的行不会被新行终止。你应该解释你想解决什么问题 - 为什么你需要这个计数 - 然后我们可以帮助你。 – APC

+0

如果你在SQL Developer中查看值,新行会出现.. – Potatooo

回答

0

你可以尝试

SELECT REGEXP_COUNT(DATA, CHR(10), 1, 'i') , _DATA FROM DATA_TABLE; 

如果你要搜索回车,这将是CHR(13)。
我制作了演示here

0

以下查询应该适合您。

SELECT length(regexp_replace(DATA, '[^'||chr(10)||']', '')) + 1 FROM DATA_TABLE; 
+0

我认为这是行不通的。我附上了样本结果。 – Potatooo

+0

认为还是不行?我有一个'DATA_TABLE'列,其中列'DATA',它有问题中给出的三行样本。在我的答案中给出的查询返回3。 – Nitish

0

翻转REGEXP_COUNT成多行模式,那么你可以使用$计数结束串结束行而非。详细请见Table 8.2 for multiline and 8.3 for $ here。例如

SELECT REGEXP_COUNT(DATA, '$', 1, 'm') , _DATA FROM DATA_TABLE; 

一个有趣的副作用是,这将返回3与您的数据,如果最后一行是或不是由一个换行符终止。