如何在PostgreSQL中获取单元格值中的换行符数量

veg*_*red 7 sql postgresql

让我们假设我有一个名为的虚构表bookInfo,其中包含以下值:

|id   |book_name   |description   |
-----------------------------------
|1    |book 1      |dummy         |
|2    |book 2      |harry         |
|     |            |potter        |
|     |            |Part 2        |
|3    |...
Run Code Online (Sandbox Code Playgroud)

description第二个记录(id = 2)列的单元格值包含"harry"和"potter"关键字之间的多个换行符,如下所示:

harry \n potter \n part 2
Run Code Online (Sandbox Code Playgroud)

有没有办法计算description列中换行符的数量,例如执行以下操作:

SELECT (count new line)description FROM bookInfo WHERE id=2;
Run Code Online (Sandbox Code Playgroud)

先前的查询应返回整数值2.

Cra*_*ger -1

position为此,您可以使用 SQL 标准函数:

craig=> SELECT position( E'\r' in E'abc\rdef\rghi' );
 position 
----------
        4
(1 row)
Run Code Online (Sandbox Code Playgroud)

或者:

craig=> SELECT position( chr(13) in E'abc\rdef\rghi' );
 position 
----------
        4
(1 row)
Run Code Online (Sandbox Code Playgroud)

  • `position` 将返回新行字符第一次出现的位置**而不是**它们的计数 (8认同)