Redshiftの文字列から連続した数字を削除しようとしています。
から'16,16,16,3,3,4,16,16,'
入手したい'16,3,4,16,'
。
次の構造は私には機能しません:
SELECT regexp_replace('16,16,16,3,3,4,16,16,', '(.+)\1{1,}', '\1');
まったく同じ文字列を返します。:(
ありがとう!
これがRedshiftpythonUDFを使用した答えです。
create or replace function dedupstring(InputStr varChar)
returns varchar
stable
as $$
OutputStr=''
PrevStr=''
first=True
for part in InputStr.split(','):
if part <> PrevStr:
if first:
OutputStr+=part
else:
OutputStr+=','+part
PrevStr=part
first=False
return OutputStr
$$ language plpythonu;
Select dedupstring('16,16,16,3,3,4,16,16,');
これは「16,3,4,16」を返します
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加