为什么不能计算字符串中的字符串?

时间:2018-06-12 08:22:01

标签: sql regex oracle pipe

select Values, REGEXP_COUNT(values,'|') from Products 

样本值单元格:

Product|Cash|Loan|Customer

选择结果 27 。如果计算任何其他char它工作,但如果我想计数|它计算整个字符串。为什么,我如何计算管道?

2 个答案:

答案 0 :(得分:4)

那是因为|在正则表达式中有特殊含义。如果您希望将它们作为普通字符读取,则需要使用\|来转义它们。

答案 1 :(得分:1)

要计算特定字符,您也可以使用:

SELECT col, LENGTH(col) - LENGTH(REPLACE(col, '|')) AS pipe_count
FROM tab;

<强> DBFiddle Demo

输出:

┌────────────────────────────┬────────────┐
│            COL             │ PIPE_COUNT │
├────────────────────────────┼────────────┤
│ Product|Cash|Loan|Customer │          3 │
└────────────────────────────┴────────────┘