PostgreSQL中的RIGHT()函数给出了错误

时间:2012-05-15 01:06:11

标签: postgresql

我正在尝试使用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)的内容,但我得到了同样的错误。

3 个答案:

答案 0 :(得分:6)

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

right不是其中之一。

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

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

答案 1 :(得分: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的回答。

答案 2 :(得分:1)

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