0

行を並べ替える

私のデータベースの行は、次の文字をランダムな順序で並べたものです

HFMNLBX#&I

妙に入力されており、列はHFとFHのようで、どちらもシステムに相当します。すべての行をアルファベット順に更新してから、最後に文字を更新する方法はありますか?

ありがとう

4

1 に答える 1

1

列内の文字をアルファベット順に並べ替える方法は次のとおりです。

select concat((case when col like '%A%' then 'A' else '' end),
              (case when col like '%B%' then 'B' else '' end),
              . . .
              (case when col like '%Z%' then 'Z' else '' end)
             ) as newcol
from t

これは重複した文字を処理しないことに注意してください。

「最後の文字」が何を意味するのか正確にはわかりません。たとえば、サブクエリを使用して、それらのサブセットのみを処理できます。

または、 の後のすべてを保持したい場合は#、次のようにします。

select concat((case when col like '%A%#%' then 'A' else '' end),
              (case when col like '%B%#%' then 'B' else '' end),
              . . .
              (case when col like '%Z%#%' then 'Z' else '' end),
              substring(col, locate('#', col) - 1)
             ) as newcol
from t
于 2013-04-29T23:07:03.073 に答える