【发布时间】:2016-12-23 17:17:53
【问题描述】:
我需要获取其中一个字符(“1”、“2”或“3”)的第一次出现,并计算某个字符(“s”)在它们之前的字符串中出现的次数。
我做了这个查询:
SELECT
distinct c1,
SUBSTRING( c1, REGEXP_INSTR ( c1, '[123]+' ) , 1) as First_123 ,
REGEXP_INSTR ( SUBSTRING( c1, 1, REGEXP_INSTR ( c1, '[123]+' )) , '[s]') as NumberOfS
FROM table
- 第一列是字符串
- 第二列是第一个出现的数字(1 2 或 3)
- 第三列是字符串中出现(1 2 或 3)之前的“s”字符数。
仅当 1、2 或 3 之前至少有一个 's' 时,计算 's' 数量的列才返回 0,如果有超过 1 个 's',则返回 1。
当在字符串中找不到 1 2 或 3 时,如何使其正确计数并计算所有 's' 字符?
【问题讨论】:
标签: sql amazon-redshift