0

Postgres にテーブルがあります。そのテーブルには 1000 を超える名前があります。ほとんどの名前は、SHRI または SMT で始まります。この SHRT と SMT を名前から削除し、元の名前のみを保存したいです。データベース機能なしでどうすればそれを行うことができますか?

4

1 に答える 1

1

ロジックを順を追って説明します。

Select left(name,3) from table

この select ステートメントは、列の最初の 3 文字 (「左」の 3 文字) を返します。最初の 3 文字で SMT を探している場合は、それを where ステートメントに移動できます。

 select * from table where left(name,3) = 'SMT'

ここから、使用できるいくつかの選択肢があります。置換を使用する可能性がありますが、左/右のスタイルを維持します。文字を SMT の右側に配置したいのですが、これらの文字を選択するのに各文字列がどれくらいの長さかはわかりません。そのため、 length() を使用してそれを決定します。

select right(name,length(name)-3) from table where left(name,3) = 'SMT'

私の構文がそこにあることを願っています。それをテストするためのpostgres環境がありません。ロジックは、「最後の 3 文字を除く文字列の右側のすべての文字 (マイナス 3 は左側の 3 文字を除外します。左側の最後の 4 文字以外をすべて必要とする場合は、これを 4 に変更します)」です。

次に、これを update ステートメント (set name = right(name,length(name)-3) ) に変更してテーブルを更新するか、SMT なしで名前が必要な場合は select ステートメントを使用できますが、実際のデータの SMT。

于 2013-09-05T15:56:25.153 に答える