Posiadacze parametrów nie są rozumiane wewnątrz literałów:'...:nom...' będzie zawierać znaki :nom , a nie powiązane wartości nom .
Dla PostgreSQL 9.5 (i nowszych) użyj:
SELECT * FROM contrat WHERE contrat_json @> jsonb_build_object('nom', :nom)
Dla 9.4:
SELECT * FROM contrat WHERE contrat_json @> CAST(json_build_object('nom', :nom) AS jsonb)
W wersji 9.3 (i wcześniejszych) nie ma operatora zawierania JSON (ani jsonb typ).
https://rextester.com/AUHP11519