0

zoho reports という名前のプログラムを使用して、アップロードしたファイル内のオブジェクトの名前を変更しようとしています。ZOHO は例の名前を変更できません。SQL、できれば Postgres を使いたいです。

phonenumber:

1. 5203123333
2. 8323125547
3. 6025456564
4. 43654xxx3

私はそれらを次のように表示したい:

1. TUCSON,AZ
2. Houston,TX
3. Chandler,AZ
4. WHATEVER

私はこれを使用しました:

SELECT "TO", replace("TO",
    '4802xxx82', 'Chandler'), replace("TO",
    '832xxxx84', 'Houston, TX'), FROM "Craiglist-December Calls" 

動作しますが、新しい列を返します。新しい列が 1 つだけ必要です。

次に、IF条件を試しましたが、3 つ以上の名前変更を試行した後にエラーが発生しました。

if("To"='83xxxx284','Houston TX',if("To"='818xxxx6','Santa Clarita CA','0'))

約8個の数字を名前に置き換えようとしているので、数字ではなく名前でグラフ化できます。
Postgres で同じ列にあるこれらすべての番号の名前を変更する方法はありますか?

4

4 に答える 4

1

おそらくこれを行う最善の方法は、電話番号と場所を記載した表を作成することです。postgresql をターゲットにしているため、列を使用しtextます。他のデータベースでは、vharchar() 列または適切な幅がおそらくより良い選択です。

creare table phnne_directory (phone text primary key, location text);
insert into phnne_directory values ('5203123333','TUCSON,AZ'),
    ('8323125547','Houston,TX')
    ('6025456564','Chandler,A')'
    ('43654xxx3','WHATEVER');

SELECT C."TO", coalesce(p.location,'unknown')
    FROM "Craiglist-December Calls" as c
    JOIN phnne_directory as p on p.phone = c.to;

このようにして、クエリ自体からデータを除外します。

于 2015-01-03T21:47:29.037 に答える
1

「翻訳」付きの2番目のテーブルがある方が良いと思います。1 列目 (パターン) like83____284と 2 列目 (表示) - 新しい名前Houston TX. 次に、次のように選択します。

SELECT t2.display FROM orig_table t1, translate_table t2 WHERE t1.phonenumber LIKE t2.pattern

PS: PostgreSQL は「Postgres SQL」(S 付き) の略です。

于 2015-01-02T22:46:22.010 に答える