2017-06-02 10 views
0

私はアプリケーションが整数値に空の値を渡しているので、syntax error at or near ','というような状況があります。空の整数の扱い

これを処理するストアドプロシージャ側から方法はありますか。

これを再現するための簡単な方法、例えばこれをやっている:

select (''::integer); 

これは明らかに返します。

ストアドプロシージャはに戻っているのと同じエラー多かれ少なかれある
ERROR: syntax error at or near ":" 

をサンプルケース。

P .:サーバーはPostgreSQL 9.5です。

+1

は、アプリケーションがこれを処理するべきではないでしょうか。空の文字列は整数ではありません。 –

+0

はい、アプリのソースコードにアクセスできません。 – leonardorame

+0

エラー: 'ERROR:整数の入力構文が無効です:" " LINE 1:SELECT( '' :: int)AS the_int'同じフラグメントを実行しましたか? – joop

答えて

2

使用nullif().

with the_data(str) as (
values 
    ('1'), 
    ('2'), 
    ('') 
) 

select nullif(str, '')::integer as value 
from the_data; 

    value 
-------- 
     1 
     2 
<null>  
(3 rows) 
+0

Mm、いいえ、問題はparamsが空で、nullではなく、 ''ではありません。 – leonardorame

+0

引数がないと、構文エラーが発生します。クライアントアプリケーションでこれを修正する必要があります。 – klin

+0

はい、かなり古いアプリでは難しいです。 – leonardorame

関連する問題