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