2016-04-26 11 views
0

JSONをMySQLデータベース(バージョン5.6.17)に保存して、列に正規表現してキャンペーンIDのリストを取得しようとしています。私のクエリは次のとおりです:選択クエリの列にregexを適用しようとしています

SELECT JSON REGEXP '"id":([0-9]*)' AS id 
FROM PROD_APPNEXUS.dimension_json_creatives; 

ここで、JSONはIDとして解析する必要があるデータを含む列です。 REGEXPはSELECTクエリの文字列に使用できます(つまり、foobar 'REGEXP'([a-z] +) 'をfoobarとします)。ただし、列は同じ方法でパターンマッチングできますか?

JSON列を文字列としてキャストして正規表現する方法はありますか?

助けていただけたら幸いです!

おかげで、

サム

+0

試しましたか?結果は何でしたか?あなたの期待とどこが違うのですか? – Paul

+0

私はそれを試しましたが、クエリはテーブルのJSONのすべての行に対して1の列を返します。私は可変長のIDを取得することを期待しています。私はおそらく、JSON列をSELECTの文字列に変換し、正規表現で列を解析できると考えています。 –

+1

REGEXPは、trueまたはfalseを意味する1または0を返します。 – Blank

答えて

0

あなたはこのように、あなたのコラムを分割するreplacesubstring_indexを使用することができます;)

SELECT replace(substring_index(JSON, ':', -1), '"', '') AS id 
FROM PROD_APPNEXUS.dimension_json_creatives; 

私はリターンAAAA以下のSQLを実行すると、

select replace(substring_index('"id":"aaaa"', ':', -1), '"', ''); 

JSONの値が存在しないと仮定しました:

関連する問題