PostgreSqlのhash_code関数の使用法
PostgreSql の hash_code 関数の実装は、java の hash_code メソッドと一致しています。
CREATE FUNCTION hash_code(text) RETURNS integer
LANGUAGE plpgsql
AS
$$
DECLARE
i integer := 0;
DECLARE
h bigint := 0;
BEGIN
FOR i IN 1..length($1)
LOOP
h = (h * 31 + ascii(substring($1, i, 1))) & 4294967295;
END LOOP;
RETURN cast(cast(h AS bit(32)) AS int4);
END;
$$;
追加です。PGSQLのいくつかの共通関数
I. COALESCE(col,value)です。
COALESCE関数は、NULL置換関数の役割、つまり、ある列の値が空のとき、他の値に置き換えて、フロントエンドに返すことができる関数です。
例: COALESCE(totalnum,0); つまり、フィールド名 totalnum のカラムの値が空の場合、0に置き換えられる。置き換えられる値は、実際の状況に応じて、数値やvarcharなどの型にすることができる。
II. regexp_split_to_table(col,',');
regexp_split_to_table関数は、正規表現を使って文字列を表に分割するための関数です。指定された列の値を分割するところです。分割されたそれぞれの部分文字列は1つの行に変換され、複数の部分文字列は複数の行に変換されます。下図のように
そこで、上記の機能を考えると、実用的な開発では、例えば、次の画像のように、マルチタイプ、マルチステート、マルチフォーマットの条件付きクエリに使用することができます。
ここで '00,10,11,98' はフロントエンドから渡してラップできる文字列変数で、ループで取り出して "'00','10','11','98'" という形の文字列にラップするよりもずっと便利です。
iii. regexp_split_to_array(col,',');
regexp_split_to_array は,次の図のように,フィールドの値を特定の記号で分割して,配列形式に変換します.
IV. string_agg
式やカラムのフィールドを直接文字列にマージする
書式 - string_ag(式, 区切り文字, 式による順序)
第1引数は、マージするフィールドまたは式を示す。
第2引数は、第1引数をリンクするために使用する記号を示し、通常は','である。
第3引数はオプションで、最初の列のフィールドをマージするためにどのようにソートするかを指定します。
例
string_agg(f_b_getusername(r.userid),',' order by r.crt_time desc) as mjxms
注:2番目のパラメータと3番目のパラメータを区別するためにコンマは必要ありません。
v. サブストリング(文字列 [from int] [for int])
substring('abcdefg' from 2 for 3) = bcd
第1引数はインターセプトする文字列、第2引数は1から始まるインターセプトする桁数、第3引数はインターセプトする長さである。
VI. 現在の日付がある曜日を取得する
SELECT extract(dow FROM cast(now() as TIMESTAMP))
dowをdayに置き換えて、現在の日付を当月の初日として取得します。
VII. 日付をINTERVAL形式に変換する
select age('2019-10-10','2018-04-19')
2つの日付が何日違うか計算することができる
上記は私の個人的な経験ですが、ご参考にしていただき、スクリプトハウスをもっと応援していただければと思います。もし間違いや検討不足があれば、遠慮なくアドバイスしてください。
関連
-
PostgreSQLのJSONBのマッチングと交差の問題について
-
postgresql 重複データ削除 ケーススタディ
-
PostgreSQLのテーブルをパーティション分割する3つの方法
-
postgresのjsonbプロパティの利用について
-
Centos環境でのPostgresqlのインストールと設定、環境変数の設定Tips
-
Postgresqlの高度なアプリケーションは、セルのアイデアをマージするの詳細
-
Postgresqlへのリモートアクセスの設定方法(ファイアウォールの設定またはOFFが必要です。)
-
どのように定期的にLinux上でpostgresqlのデータベースをバックアップする
-
Postgresqlのデータは、2つのフィールドを追加し、一意の操作を統合する
-
PostgreSQLはバッチ実行のためにSQLをファイルに実装しています。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
PostgreSQLのURL解決方法
-
postgresqlにおける時間処理のコツ(推奨)
-
PostgresqlのデータベーステーブルのデータをExcel形式にエクスポートする方法(推奨)
-
Postgresql データベース timescaledb timescaledb 問題 大容量データテーブルをスーパーテーブルに変換すること
-
Postgresqlのデータベース権限まとめ
-
GROUP BY句での定数使用に関するPostgreSQLの特別な制限について説明します。
-
pgAdmin for postgreSQLでサーバーのデータをバックアップする方法
-
oracle_fdwを介してOracleデータにアクセスするためのPostgreSQLの手順
-
PostgreSQLのデータベースでLIKE文の効率を確保する方法(推奨)
-
PostgreSQLにおけるVACUUMコマンドの使用方法