データベース・SQLツール

PostgreSQL配列パーサー時間間隔も確認

配列またはintervalの生の値を入力し、データベースを操作せずに構造を確認します。

PostgreSQL配列パーサー

PostgreSQLの生の値

JSONレポート

値はこのブラウザー内で解析されます。送信、データベース接続、ネットワーク要求は行いません。

入力オプション

SQLの外側の引用符やキャストを除いた値を入力してください。NULL以外の配列要素は文字列のまま、時間間隔の項目は別々に保持します。

65,536文字・10,000要素・6次元まで。秒は小数6桁まで。

次元:2・要素:6・NULL:1

PostgreSQL配列パーサーは、ドライバーやログから得た波括弧付きの文字列を調べるための道具です。カンマで単純に分割すると、要素内に含まれるカンマや引用符まで区切りとして扱ってしまいます。

サンプルではNULL、文字列の「NULL」、空文字列を比較できます。時間間隔では入力元の出力形式を先に確認してください。負号がどの項目まで適用されるかは形式によって変わります。

PostgreSQL配列パーサーを使う理由

添字の情報を落とさない

PostgreSQL配列パーサーは、入れ子の値と各次元の長さ、下限、上限をまとめて表示します。下限が0や負数でもメタデータに残るため、配列をJSONに変換した後も元の座標を確認できます。

2行3列の配列を保ち、欠損値と引用符付き文字列を別のセルとして示す図

月と日を固定秒数にしない

intervalの月、日、マイクロ秒は別々に表示します。月の日数や夏時間による一日の長さを仮定せず、正負が混在した項目も保持するので、時間差への変換で隠れやすい違いが見えます。

月のカレンダー、日のマス、精密な時計に時間間隔を分けた図

意味が変わる箇所を先に確認

01

形式の切り替えは入力を保持

エディターの下で配列またはintervalを選びます。形式を変えても原文は消えません。現在の形式に合うサンプルを読み込むときは、置換内容と文字数をプレビューしてから適用します。

02

下限と符号を読む

初期サンプルは最初の次元が添字0から始まります。dimensionsとnullCountを確認してください。sql_standardでは後続の明示的な符号がなければ、先頭の負号が日と時刻にも適用されます。

03

自動解析のタイミングを調整

最後の編集から350ミリ秒後に解析します。自動を切ると解析ボタンとCtrl/Cmd+Enterを使えます。変更直後は出力操作が無効になり、長い結果は100行ずつ表示されます。保存対象は常に全体です。

構造と精度を保つ解析

見た目で型を決めない

001や大きな整数も文字列のまま保持します。配列リテラルだけでは要素のデータ型を確定できないためです。多次元配列は長さがそろっている必要があり、不ぞろいな行を補完したり平坦化したりしません。

引用符とエスケープを区別

二重引用符内のカンマ、エスケープした引用符やバックスラッシュ、保護された空白を読み取ります。引用もエスケープもないNULLだけがnullになり、「NULL」や空文字列は文字列として残ります。

出力形式を指定してinterval解析

postgres、postgres_verbose、sql_standard、iso_8601に対応します。月や日などは整数、秒だけは小数6桁までを受け付けます。結果の3項目は整数演算で求め、精度を失わない10進文字列として出力します。

対応構文と制限

SQLではなく内側の値を入力
配列は{...}と任意の次元指定、時間間隔は単独の値を入力します。SQL文、ARRAY式、外側の単一引用符、E-string、キャスト、フィールド指定は対象外です。接続、ファイル読込、URL取得も行いません。
要素型の検証はしない
標準はカンマ区切りです。box形式ではセミコロンを選べます。境界は実際の形状と一致する必要があり、空の入れ子配列は0次元の空配列になります。OID、独自区切り文字、array_nulls=offには対応しません。
時間間隔は限定した構文に対応
選んだ出力形式に近い記法を使ってください。月・日・時・分の小数、無限値、ISO代替形式、未知の単位、単位なしの非ゼロ数は拒否します。秒の小数が6桁を超えても丸めません。総秒数やTemporalへの変換はありません。
上限を超えた結果は出力しない
入力はJavaScriptの文字数で65,536、配列要素は10,000、次元は6までです。月と日は符号付き32ビット、マイクロ秒は符号付き64ビットの範囲に限ります。エラー時は保存を止め、途中までの結果を返しません。

PostgreSQL配列パーサーのよくある質問

PostgreSQLの配列を配列として取り出したい

文字列として返された値が波括弧で囲まれているなら、配列モードで読み取り、JSONのvaluesを確認できます。数値らしい要素も文字列のままです。添字の下限はJSONの配列自体に入らないため、必要ならdimensionsも一緒に保存してください。

PostgreSQLの配列ではNULLがどのように扱われますか?

引用もエスケープもないNULLは大文字小文字を問わずnullになります。"NULL"は文字列、""は空文字列です。nullCountで件数も確認できます。値全体のSQL NULLは配列リテラルではありません。空配列を表す場合は{}を使います。

多次元配列の挿入でmalformed array literalになるのはなぜですか?

各次元の要素数が一致しているか確認してください。{{a,b},{c}}のように行ごとの長さが違う値は不正です。この道具は欠けたセルを追加しません。原文を修正し、次元指定がある場合はその長さも合わせて確認します。

PostgreSQL COPYで配列要素の二重引用符をどうエスケープしますか?

COPYやCSVの外側の表記と、配列要素のエスケープは別の層です。ここで扱うのは配列の内側だけです。引用符付き要素では二重引用符とバックスラッシュの前にバックスラッシュを置きます。外側のCSVやSQL文字列は先に解除してください。

PostgreSQLのintervalを秒に変換すると値が合わないのはなぜですか?

月の日数は一定ではなく、夏時間をまたぐ暦の一日も常に24時間とは限りません。3項目を固定の換算率でまとめると、想定した経過時間と食い違うことがあります。この結果は項目を分けたまま保持し、総秒数は計算しません。

1 day 01:30:00を25:30:00のように表せますか?

SQLなどで表示を組み直すことはできますが、日を時間へ移す変換になります。ここでは1 day 01:30:00はdays="1"、microseconds="5400000000"です。25:30:00ならdays="0"、microseconds="91800000000"となり、元の区分を残します。

解決しませんでしたか?

次の値を確かめる

PostgreSQL配列パーサーで添字と値を確認するか、interval形式を選んで3項目を見比べてからJSONを保存してください。

一度に一つの値を確認し、自動修復は行いません。