【问题标题】:Counting occurrences in Amazon Redshift strings计算 Amazon Redshift 字符串中的出现次数
【发布时间】: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


    【解决方案1】:
    select  c1
           ,regexp_substr (c1,'[1-3]')  as first_123 
           ,regexp_count  (c1,'s[1-3]') as single_s_before_123
           ,regexp_count  (c1,'s')      as all_s
    
    from    table
    

    附:我目前无法访问 amazon-redshift

    【讨论】:

      猜你喜欢
      • 2014-04-24
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 2020-02-21
      • 2012-02-12
      相关资源
      最近更新 更多