2016-12-23 6 views
0

これらの文字(「1」、「2」または「3」)のいずれかが最初に出現し、特定の文字(「s」)が何回発生したかをカウントする必要がありますそれらの前の文字列。Amazon Redshiftストリングの出現数をカウントする

私はこのクエリを作った:

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 
  • 最初の列は、2番目の列は3列目の数である(1,2又は3)
  • 最初に発生した数である文字列
  • ありますの前の文字列の 's'文字の前に(1,2または3)が発生します。

's'の数を数える列は、少なくとも1つが1,2,3の前にあり、1が2つ以上ある場合は0を返します。

文字列に1 2または3が見つからない場合、どのように正しくカウントされ、すべての 's'文字も数えられますか?

答えて

0
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 

p.s.私は現在、アマゾンの赤方偏移にアクセスできない。