2017-10-20 7 views
0

私は現在、このようなPostgreSQLテーブルを持っています。データカラムはJSONです。JSONデータにあるかもしれないし、そうでないかもしれないキーに基づいてテーブルをクエリしようとしています。私はそれを行うためのより効率的な方法は、おそらくそこにある知っているPostgres query json data

存在しない列「789」:

| A | B | C |   data      | 
    ---------------------------------------------------- 
    | 1 | 2 | 3 | {}         | 
    | 2 | 3 | 3 | {"name": "jack", "message": "123"} | 
    | 3 | 4 | 3 | {"name": "jill", "voice": "456"} | 
    | 4 | 2 | 3 | {"name": "bill", "email" "789"} | 

は現在、私は、私は現在、エラー、エラーを取得しています

SELECT * 
    FROM (
    SELECT 
    a, 
    b, 
    c, 
    coalesce(
     CASE 
     WHEN (data ->> 'message') IS NULL 
      THEN NULL 
     ELSE (data ->> 'message') 
     END, 
     '') AS message, 
    coalesce(
     CASE 
     WHEN (data ->> 'voice') IS NULL 
      THEN NULL 
     ELSE (data ->> 'voice') 
     END, 
     '') AS voice, 
    coalesce(
     CASE 
     WHEN (data ->> 'email') IS NULL 
      THEN NULL 
     ELSE (data ->> 'email') 
     END, 
     '') AS email 
    FROM mytable) AS t 
    WHERE (t.message = "789" OR 
      t.voice = "789" OR 
      t.email = "789"); 

を持っています。どんな助けでも大歓迎です。

+1

文字列をSQLで単一引用符で囲む必要があります。二重引用符は識別子のためのものです。 –

+0

Ahhhhhh!とても明らかです。ありがとう –

答えて