정규식 쿼리를 사용하여이 작업을 수행 할 수 있는지 확실하지 않지만 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)과 같은 열이 있는지 물어볼 수 있습니다. 이중 하나의 문자열 만 출력으로 가져 오는 값만 찾고 싶습니까? – hadooper