[解決済み] psqlでスクリプト変数を使用するには?
2022-04-25 04:02:17
質問
MS SQL Serverで、カスタマイズ可能な変数を使用するスクリプトを作成しました。
DECLARE @somevariable int
SELECT @somevariable = -1
INSERT INTO foo VALUES ( @somevariable )
次に
@somevariable
は、特定の状況下で必要な値に応じて、実行時に設定します。スクリプトの一番上にあるので、見やすく、覚えやすい。
PostgreSQLクライアントで同じことをするにはどうすればよいでしょうか。
psql
?
解決方法は?
Postgresの変数は、例えば、......㊙セットコマンドで作成します。
\set myvariable value
... そして、例えば次のように代入することができます...
SELECT * FROM :myvariable.table1;
または...
SELECT * FROM table1 WHERE :myvariable IS NULL;
edit: psql 9.1では、変数は引用符で囲んで次のように展開することができます。
\set myvariable value
SELECT * FROM table1 WHERE column1 = :'myvariable';
古いバージョンの psql クライアントで。
... この変数を条件付き文字列クエリの値として使用したい場合、例えば ...
SELECT * FROM table1 WHERE column1 = ':myvariable';
...の場合、上記ではうまくいかないので、変数自体に引用符を入れる必要があります。 代わりに、次のような変数を定義してください。
\set myvariable 'value'
しかし、私のように、既存の変数から文字列を作りたい場面に出くわした場合、そのコツはこうでした.
\set quoted_myvariable '\'' :myvariable '\''
これで、同じ文字列の引用符で囲まれた変数と囲まれていない変数の両方を持つことができます! そして、次のようなことができるようになります.
INSERT INTO :myvariable.table1 SELECT * FROM table2 WHERE column1 = :quoted_myvariable;
関連
-
[解決済み] psql: FATAL: データベース "<user>" が存在しない
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] 変数が「未定義」または「NULL」であるかどうかを判断するにはどうすればよいですか?
-
[解決済み] JavaScriptの変数のスコープとは何ですか?
-
[解決済み] Bashで変数が設定されているかどうかを確認する方法は?
-
[解決済み] JavaScriptで変数が配列であるかどうかを確認する方法は?
-
[解決済み] PostgreSQL コマンドラインユーティリティ: psql を終了する方法
-
[解決済み] テーブルネーミングのジレンマ:単数形と複数形の名前【非公開
-
[解決済み] psqlでデータベースを切り替えるには?
-
[解決済み] 各グループの上位1行を取得
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解決策:java.sql.SQLException: ユーザー ''@'localhost'' (パスワード: YES を使用) のアクセスが拒否されました。
-
org.postgresql.util.PSQLException: ERROR: リレーション "userinfo" の列 "loginid" が存在しません。
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] UNIONとUNION ALLの違いは何ですか?
-
[解決済み] INNER JOINよりもCROSS APPLYを使用すべきなのはどのような場合ですか?
-
[解決済み] postgres: ユーザーをスーパーユーザーにアップグレードしますか?
-
[解決済み] SQL ServerにおけるINSERT OR UPDATEに関する解決策
-
[解決済み] Count()で条件を指定することは可能ですか?
-
[解決済み] SQL ServerでGROUP BYを使って文字列を連結する方法とは?
-
[解決済み] SQL Serverで、ある日付より大きいすべての日付を照会するにはどうすればよいですか?