计算Oracle中逗号分隔字符串中的元素数

use*_*737 5 sql oracle

假设我有一个表Col2是varchar

Col1 Col2
1    001,002
2    003,004,005
Run Code Online (Sandbox Code Playgroud)

我需要计算Col2中的元素数量,如果我这样做,则返回它:

select --do something here with column-- from table
Run Code Online (Sandbox Code Playgroud)

它会给我:

2
3 
Run Code Online (Sandbox Code Playgroud)

Lin*_*ger 19

因此,通过计算,Col2中的s 数并向其中添加1将为您提供答案.下面我得到了Col2的长度.然后我,用什么都替换s并得到那个长度.我取第一个长度并减去第二个长度以得到逗号的总数.然后只需在结果中添加1即可获得您要查找的总数:

SELECT (LENGTH(Col2) - LENGTH(REPLACE(Col2,",","")) + 1) AS MyCol2Count
FROM MyTable
Run Code Online (Sandbox Code Playgroud)

  • 是的,PostgreSQL支持长度功能.请参见[**字符串函数和运算符**](https://www.postgresql.org/docs/8.1/static/functions-string.html).看看这个[**SQL Fiddle**](http://sqlfiddle.com/#!15/96ae9/5).你需要在Postgre中使用单引号而不是我在答案中显示的双引号. (2认同)

Ben*_*Ben 14

如果它总是这样格式化,只需计算逗号数,然后加1:

select regexp_count(col, ',') + 1
  from table
Run Code Online (Sandbox Code Playgroud)