query a JSON type column in Postgres
You need to extract the value as text which is done using the -&gt;&gt; operator (-&gt; returns a json value).
SELECT * 
FROM job_request_table p
  cross join json_array_elements(p.data_meta) as d(element)
where d.element -&gt;&gt; 'data_type' = 'Insurance';

However, given your sample data, this would result in the error &quot;cannot extract elements from an object&quot; as the content of data_meta is not an array.
If you want to test if a JSON value contains a specific key/value pair, use @&gt; - but that can only be used with jsonb, so you need to cast the column:
SELECT * 
FROM job_request_table p
where data_meta::jsonb @&gt; '{&quot;data_type&quot;: &quot;Insurance&quot;}';

You can use this also to check inside the array in source_data (but again a cast to jsonb is neeed):
where source_data::jsonb @&gt; '[{&quot;vendor&quot;: &quot;ABC&quot;}]'


In the long run, I would recommend to change both columns to jsonb