0
「page1 - > page2 - > page1 - > page3 - > page1 - page2 - > ...」のような文字列値を持つ列があります。teradataの文字列中の部分文字列の出現回数を取得するにはどうすればよいですか?
検索したい特定のページに対して、その文字列内のページの出現回数を取得します。私はこの結果を与える関数を見つけることができませんでした。
「page1 - > page2 - > page1 - > page3 - > page1 - page2 - > ...」のような文字列値を持つ列があります。teradataの文字列中の部分文字列の出現回数を取得するにはどうすればよいですか?
検索したい特定のページに対して、その文字列内のページの出現回数を取得します。私はこの結果を与える関数を見つけることができませんでした。
何の組み込み関数はありませんが、一般的な解決策があります:
は、文字列から部分文字列のすべての出現箇所を削除し、前/後の長さを比較する:
(Char_Length(string) - Char_Length(OReplace(string, searchstr)))/Char_Length(searchstr)
編集:
のためには、あなたが利用できるワイルドカード検索REGYP_REPLACE:
Char_Length(RegExp_Replace(RegExp_Replace(s, 'page1(.+?)page3', '#',1,0), '[^#]','',1,0))
`# 'には、入力文字列に含まれていないことが分かっている文字を使用します。
%を使用してワイルドカード検索を使用している場合、カウントを取得する方法はありますか?たとえば、検索文字列が「page1%page3」の場合 –
RegExを使用して同様のアプローチを実行できますが、私は自分のアンカーを更新します。 – dnoeth
ありがとうよ@Dnoeth –