2016-10-17 9 views
1

私のユースケースは、このようなものです:私はこのような何かを探しています複数の文字列をpostgresqlの文字列に置き換えて置き換える最も読みやすい方法は何ですか?

String = "INDIA CANADA ITALY", 
String Post Repacement = "IN CA IT" 

replaceMultiple(String, "INDIA", "IN", "CANADA", "CA", "ITALY", "IT") 

私は現在置き換えるネストされて使用してこれをやっているが、それはあまり読みませんし、もし私がより多くの置換えを追加したいなら、私はそれをさらに入れ子にします。

これは、実行時にキーと値のペアで一時テーブルを作成し、string内のすべてのキーをvalueに置き換えるなどの機能によって実現できます。 または他の方法ですか?

+0

あなたが(ソース、パターン、交換[、フラグ])REGEXP_REPLACEをお探しですか? – ChrisB

+0

@ChrisB AFAIK regexp_replace(source、pattern、replacement [、flags])は、1つの置換えで置換されるパターンに対してのみ機能します。私が探しているのは、複数のキー値置換です。 – dushyantashu

+0

可読性が問題であれば、私自身の関数 'replace_multiple()'を書くでしょう。 –

答えて

1

これにはさまざまな方法があります。

あなたは一時テーブルとregexp_replaceを使用することができ、または、あなたはこのようにJSON辞書を使用することができます

SELECT string_agg(
      COALESCE(
      '{ "INDIA": "IN", "CANADA": "CA", "ITALY": "IT" }'::jsonb->>s, 
      s 
     ), 
      ' ' 
     ) 
FROM regexp_split_to_table('INDIA CANADA ITALY', '\s') s; 
関連する問題