0

一連の文字 {a,aa,b,bb,c,cc,bbb} が与えられた場合

最初に一文字、次に二文字、三文字の順序で注文したいと思います。その構成内で、アルファベット順に並べたいと思います。

例: a,b,c,aa,bb,cc,bbb

私のユースケースでは、最大3文字までしかありません。何か案は?

4

1 に答える 1

2

提供したデータについては、長さだけを使用できます。

order by length(letters),
         letters;

これは、文字が質問で説明されているとおりであり、その後に文字が追加されていないことを前提としています。

これらがプレフィックスである場合、ブルート フォース アプローチは次のようになります。

order by ((substring(letters, 1, 1) = substring(letters, 2, 1)) +
          (substring(letters, 1, 1) = substring(letters, 3, 1)
         ), letters;

つまり、最初の文字を次の 2 文字と比較します。01 番目と 2 番目の文字が異なる場合、上記は を返します。1、1 番目と 2 番目が同じで、3 番目が異なる場合。および23 文字のプレフィックスの場合。

于 2013-08-06T01:01:13.513 に答える