2016-06-15 12 views
1

私はヌルでないか空でない場合、複数のパラメータを文字列に組み合わせる関数を持っています。特定のパラメータでは、LIKE条件に%文字を使用します。 私の問題は、パラメータのように変換を実行しようとするフォーマット関数です。どうすればこれを避けることができますか?文字列に%がある場合、PostgreSQLでformat関数を使うには?

私はパラメータと複数のLIKEで10回以上のテストを行っています。二FORMAT関数以下の例で は、テスト%に%を変換しよう

_nom_personne_like := 'TEST%'; 
_type_activite_personne := 'SOMETHING'; 
IF _nom_personne_like != '' THEN 
    _query := _query || ' AND personne_planning.nom_personne LIKE %L '; 
    _query := FORMAT(_query,_nom_personne_like); 
END IF; 
IF _type_activite_personne != '' THEN 
    _query := _query || ' AND personne_planning.type_activite = %L '; 
    _query := FORMAT(_query,_type_activite_personne); 
END IF;` 

サーバから返されたメッセージは次のとおりです。変換型指定子«"»私はすでに%を倍増しようとしている認識されていない 、それを動作しません。

答えて

1

。 関数の最初のパラメータとして変数を使用しないというルールに従います。 コードは次のようになります。

_nom_personne_like := 'TEST%'; 
_type_activite_personne := 'SOMETHING'; 
IF _nom_personne_like != '' THEN 
    _query := 
     format(
      '%s AND personne_planning.nom_personne LIKE %L ', 
      _query, 
      _nom_personne_like); 
END IF; 
IF _type_activite_personne != '' THEN 
    _query := 
     format(
      '%s AND personne_planning.type_activite = %L ', 
      _query, 
      _type_activite_personne); 
END IF;` 
+0

私は、||それは魅力のように働いています、ありがとう。 – Bidjes

1

あなたはそうのようなformat()機能を忘れることができます:私は原因より読みやすくする文字列の連結上format()を好む

_nom_personne_like := 'TEST%'; 
_type_activite_personne := 'SOMETHING'; 
IF _nom_personne_like != '' THEN 
    _query := _query || ' AND personne_planning.nom_personne LIKE ' || 
       quote_literal(_nom_personne_like); 
END IF; 
IF _type_activite_personne != '' THEN 
    _query := _query || ' AND personne_planning.type_activite = ' || 
       quote_literal(_type_activite_personne); 
END IF; 
関連する問題