2017-03-01 29 views
0

將不包含有效JSON的文本值轉換爲JSON只是將語句彈出。我不知道哪一行或哪個值。我如何得到這個?PostgreSQL - 查找無效的文本值JSON

手指劃過,它不涉及UDF ......我真的不想將這些注入到我們的堆棧中。 (我們使用Ruby的Rails的ActiveRecord的數據庫遷移,和我幾乎可以肯定的UDF將被記錄到schema.rb。)

+0

一函數**是最好的(也可能是唯一的)解決方案。如果你的混淆層不允許你使用它,你應該找到一些不同的東西。 –

+0

你嘗試過'to_json'嗎? –

回答

0

你例外的校驗值找到行,如:

t=# do 
$$ 
declare _r record; 
begin 
    for _r in (with j as (select * from (values ('3'),('{"valid":true}'),('notValid')) as son) select column1 v from j) loop 
    begin 
     perform _r.v::json; 
     exception when others then raise info '%',concat(_r.v,' ',SQLSTATE); 
    end; 
    end loop; 
end; 
$$ 
; 
INFO: notValid 22P02 
DO 
t=# \e 
INFO: test3 22P02 
INFO: notValid 22P02 
DO