PostgreSqlのhashucode関数の使い方説明


PostgreSql実現のhashucode関数と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のいくつかの常用関数
一、COALESCE(col、value);
COALESCE関数の役割は、空の値置換関数、すなわち、ある列の値が空の場合、他の値に置き換えて、フロントエンドに戻ります。
eg:COALESCE(totalnum、0);つまり、フィールド名がtotalnumの列の値が空の場合は、0で置換し、代替する値は実際の状況に応じてnumberタイプ、varharタイプなどがあります。
二、regexp_スプリット.to_テーブル
regexp_スプリット.to_テーブル関数の役割は、正規表現を用いて文字列を表に分割することです。指定された列の値を分割します。分割された各サブストリングは1行になり、複数のサブストリングは複数行になります。下図のように:

したがって、上記の機能に鑑みて、実際の開発においては、多種類、多状態または多形式の条件照会に用いることができます。例えば、下の図のように:

その中の'00,10,11,98'は先端からパッケージ化された文字列変数に伝えられます。この方法はサイクルで取り出して、'00'、'10'、'11'、'98''という形式の文字列にカプセル化するより便利です。
三、regexp_スプリット.to_array(col,');
regexp_スプリット.to_arrayは、あるフィールドの値を特定の記号で分割して配列に変換し、下図のようにします。

四、ストリングスagg
表式または列のフィールドを直接結合して文字列にします。
フォーマットagg(expression,delimiter order by expression)
最初のパラメータは、結合が必要なフィールドまたは表式を表します。
二つ目のパラメータはどの記号で最初のパラメータをリンクするかを表します。普通は'を使います。
第三のパラメータはオプションで、第一列のフィールドをどのように並べ替えて結合するかを表します。
例:

string_agg(f_b_getusername(r.userid),',' order by r.crt_time desc) as mjxms
注:2番目のパラメータと3番目のパラメータの間にはカンマで区切られる必要はありません。スペースだけが必要で、スペースも必要ではありません。
五、substring(string[from int][for int]

substring('abcdefg' from 2 for 3) = bcd
最初のパラメータは切り取られる文字列で、2番目のパラメータは何番目から切り取り、開始位置は1、3番目のパラメータは切り取りの長さを表します。
六、現在の日付を取得するのは何曜日ですか?

SELECT extract(dow FROM cast(now() as TIMESTAMP))
ダウンをdayに換えると、現在の日付を取得するのは現在の月の数日目です。
七、日付をINTERVAL形式に変換する

select age('2019-10-10','2018-04-19')
2つの日付の間の日付の違いを計算できます。

以上は個人の経験ですので、参考にしていただければと思います。間違いがあったり、完全に考えていないところがあれば、教えてください。