1. ホーム
  2. データベース
  3. ポストグレスキュー

単語をソートするカスタム関数とそれをPostgreSQLで使用する(実装コード)

2022-01-10 08:30:57

Pythonの実装ロジック

1. セパレータによる文字列のリスト型への分割

drugs.split(separator)

2. リストソート

drug_list.sort()

3. リストステッチ

separator.join(drug_list)

4. 型式決定

データベースの対応するフィールドがNULL、つまりPythonのNoneである可能性があり、None型はsplit()の使い道がないので、それが真かどうかを判断する条件を追加します。もしNULLであれば、Noneを返します。

Pythonの実装

def word sort(drugs,separator):
    if drugs:
        drug_list=drugs.split(separator)
        drug_list.sort()
        new_drugs=separator.join(drug_list)
    else:
        new_drugs=None
    return new_drugs
word sort(drugs,separator)

SQLの実装

DROP FUNCTION IF EXISTS word sorting;
CREATE OR REPLACE FUNCTION word sort (drugs TEXT, separator TEXT)
	RETURNS text
AS $$
if drugs:
	drug_list=drugs.split(separator)
	drug_list.sort()
	new_drugs=separator.join(drug_list)
else:
	new_drugs=None
return new_drugs
$$ LANGUAGE plpython3u;
 
SELECT word sort('aa;dd;bbb;cd;zz',';');

以上、PostgreSQLで単語の並び替えを行うカスタム関数とその使い方についてご紹介しました。PostgreSQLのカスタム関数については、Script Houseの過去記事を検索していただくか、引き続き以下の記事をご覧ください。