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:错误:函数正确(文本,整数)不存在第 3 行:...|' '||zip as citystatezip, email, ' * ** * '||right(cc_n...

关于为什么会发生这种情况的任何想法?我尝试只单独使用RIGHT()并放入类似的东西RIGHT('Help me', 2),但我得到了同样的错误。

4

3 回答 3

7

我假设psql是 PostgreSQL。如果是这种情况,您应该阅读PostgreSQL 文档来描述您可以使用的字符串函数。

right不是其中之一。

试试substring(cc_number from char_length(cc_number) - 3)

将来您可能希望使用 Google 来帮助回答此类问题。谷歌是一个搜索引擎;您可以使用搜索引擎查找文档;文档告诉您如何使用产品。

于 2012-05-15T01:11:49.167 回答
2

RIGHT(str, num) - 在 9.1 版中添加到 Postgresql

于 2017-01-17T17:30:10.113 回答
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 回答