2017-10-12 8 views
0

キャンペーンコードから日と月を抽出する必要がありますが、クエリでNULL値のみが返されます。キャンペーンの値は全長が異なりますが、曜日と月は常に 'mmmdd'の形式に従います(例:aug23、sep12、oct09)。REGEX_SUBSTR Redshift

サンプルクエリ:

SELECT Campaign, 
     Year, 
     REGEXP_SUBSTR(campaign, '[a-z]{3}\d{2}') AS Month_Day 

FROM GA_CAMPAIGN 

サンプル表:

Campaign           | Year | Month_Day 
TL-17-push-general-sep15septemberhighlights-0-0-0- | 17 | NULL 
FA-17-stoke-aug09augusthighlights-0-0-0-0-0  | 17 | NULL 

所望の出力:

Campaign           | Year | Month_Day 
TL-17-push-general-sep15septemberhighlights-0-0-0- | 17 | sep15 
FA-17-stoke-aug09augusthighlights-0-0-0-0-0  | 17 | aug09 

事前にありがとうございます!

+0

redshift python UDFを使用すると、これを完全に解決できます。誰も正規表現の解決策を見当たらない場合、私はこれを手伝ってくれるでしょう。 –

答えて

1

\dは期待どおりに機能しません。代わりに[0-9]を使用してください。

WITH sample AS (
      SELECT 'TL-17-push-general-sep15septemberhighlights-0-0-0' campaign 
UNION ALL SELECT 'FA-17-stoke-aug09augusthighlights-0-0-0-0-0'  campaign 
) 
SELECT campaign, 
     REGEXP_SUBSTR(campaign, '[a-z]{3}[0-9]{2}') AS Month_Day 
FROM sample 
; 
--      campaign      | month_day 
-----------------------------------------------------+----------- 
-- TL-17-push-general-sep15septemberhighlights-0-0-0 | sep15 
-- FA-17-stoke-aug09augusthighlights-0-0-0-0-0  | aug09 
+1

そのトリックをやった...ありがとう! – izzy84