5

RIGHT()顧客テーブルから取得したクレジットカード番号の最後の4桁のみが表示されるように、この関数を使用しようとしています。これは私がこれまでに持っているものです:

create function get_customer(text) returns setof cusinfo as

$$

select upper(first_name)||' '||upper(last_name) as full_name, upper(address), upper(city)||', '||upper(state)||' '||zip as citystatezip, email, '************'||right(cc_number,4), cc_name

from customer

where customer_id = $1;

$$ language sql;

私が与えられているエラーは次のとおりです。

psql:finalproject.sql:273:エラー:関数right(text、integer)が存在しません3行目:... | ' '|| zip as citystatezip、email、' * ** * '|| right(cc_n .. ..

なぜこれが起こっているのかについてのアイデアはありますか?RIGHT()単独で使用して、のようなものを入れてみましRIGHT('Help me', 2)たが、同じエラーが発生します。

4

3 に答える 3

7

psqlはPostgreSQLであると仮定しています。その場合は、使用可能な文字列関数について説明しているPostgreSQL のドキュメントを読む必要があります。

rightそれらの1つではありません。

試してみてくださいsubstring(cc_number from char_length(cc_number) - 3)

今後、Google を使用して、このような質問に答えることができます。Google は検索エンジンです。検索エンジンを使用してドキュメントを見つけることができます。ドキュメントには、製品の使用方法が記載されています。

于 2012-05-15T01:11:49.167 に答える
1

不足している RIGHT 関数を作成できます。

DROP FUNCTION IF EXISTS
    RIGHT
        (
            IN_STRING VARCHAR(4000),
            RIGHT_OFFSET INT
        );

CREATE FUNCTION
    RIGHT
        (
            IN_STRING VARCHAR(4000),
            RIGHT_OFFSET INT
        )
    RETURNS VARCHAR
AS $$
    BEGIN 
        RETURN SUBSTRING(IN_STRING FROM CHAR_LENGTH(IN_STRING) - (RIGHT_OFFSET - 1));
    END;
$$ LANGUAGE PLPGSQL;

@ta.speot.is の回答から適応。

于 2015-07-24T18:06:00.740 に答える