sql >> データベース >  >> RDS >> PostgreSQL

コマンドラインで指定されていない場合にのみ、psql-scriptで変数を設定します

    変数のデフォルト値の設定はpsqlではサポートされていませんが、回避策を使用して行うことができます。

    このpsqlコマンド:

    \set myVar :myVar
    

    変数がすでにpsqlを介して設定されている場合(つまり、myVarが再び彼の値に設定されている場合)は何もしません。それ以外の場合、変数は文字列:myVarに文字通り設定されます。 。

    この状況と他のpsqlコマンド\gsetを使用する 、myVarのデフォルト値を実際に設定できます。これをSQLスクリプトの上に置きます:

    \set myVar :myVar
    -- now myVar is set to the string ':myVar' if was not already set.
    -- Checking it using a CASE statement:
    SELECT CASE 
      WHEN :'myVar'= ':myVar'
      THEN 'default_value' 
      ELSE :'myVar' 
    END AS "myVar"  \gset -- < \gset call at end of the query
    

    テキスト変数でのみ機能するようですが、数値変数が必要な場合は数値にキャストできます:

    SELECT CASE 
      WHEN :'myVar'= ':myVar'
      THEN '10' 
      ELSE :'myVar' 
    END::numeric AS "myVar"  \gset
    

    \ gsetの仕組み:

    \gset 選択クエリの結果から変数を設定できます。結果変数には列名と同じ名前が付けられます。そのため、AS "myVar"句が必要です。 クエリの最後(大文字で変数名を使用する場合は、二重引用符を忘れないでください)。

    たとえば、次のコマンド:

    SELECT 'hello' AS var1 \gset
    

    変数var1を設定します helloへ 、

    と同じ
    \set var1 hello
    

    詳細については、こちらをご覧ください: http://www.postgresql.org /docs/9.4/static/app-psql.html



    1. 不要な空のXMLタグを取り除くにはどうすればよいですか?

    2. データベースレコードを配列に格納する

    3. Oracle:ROWNUMをORDERBY句と組み合わせて使用​​してテーブル列を更新する

    4. LOADDATAを使用するときにMySQLで日付データをロードする方法