これは単なる正規表現クエリを使用して行うことはできませんが、Jonが述べたように、UDFはかなりうまく動作します。
テキストをコンマで区切り、ユニークな単語のセットを作成して何らかの形式で戻します。
CREATE FUNCTION f_unique_words (s text)
RETURNS text
IMMUTABLE
AS $$
return ','.join(set(s.split(',')))
$$ LANGUAGE plpythonu;
使用例:
> select f_unique_words('GiftCard,GiftCard');
[GiftCard]
> select f_unique_words('GiftCard,Cat,Dog,Cat,Cat,Frog,frog,GiftCard');
[frog,GiftCard,Dog,Frog,Cat]
それはあなたがクラスタへの適切なアクセス権を持つに依存しない機能は次のようなものになるだろう。関数を作成するには、ユーザーのために 'plpythonu'という言語でUSAGEが許可されていることを確認してください。あなたは小文字で、すべての出力を入れていないこれの大文字小文字を区別しないバージョンをしたい場合、これはどうしたらサイドノートとして
:
CREATE FUNCTION f_unique_words_ignore_case (s text)
RETURNS text
IMMUTABLE
AS $$
wordset = set(s.split(','))
return ','.join(item for item in wordset if item.istitle() or item.title() not in wordset)
$$ LANGUAGE plpythonu;
使用例:
> select f_unique_words_ignore_case('GiftCard,Cat,Dog,Cat,Cat,Frog,frog,GiftCard');
[GiftCard,Dog,Frog,Cat]
がしますデータは常に, ??のように見えます。この列のデータは他のどのフォーマットで表示されますか? –
hadooper
はい、データは常にstring1、string2、 –
になります。データに(string1、string1)alwaysまたは(string1、string2)(string1、string1)のような列があるかどうかを確認することを意味しました。その中で、重複している値だけを検索し、出力として1つの文字列を取得したいのですか? – hadooper