如何从PostgreSQL函数返回表时删除或转义双引号

问题描述 投票:0回答:1

你好我有一个返回表的PostgreSQL函数


-- Function: stloadstoryview(integer)

-- DROP FUNCTION stloadstoryview(integer);

CREATE OR REPLACE FUNCTION stloadstoryview(IN luserid integer)
  RETURNS TABLE(stid integer, stname text, stowner character varying, stbegin date, stend date) AS
$BODY$
Begin

    Return query
    Select dbStory.stID, dbStory.stName, (Select usName from dbUser where usID = dbStory.stOwner):: Varchar(30), dbStory.stBegin, dbStory.stEnd from dbStory 
        where dbStory.stID in (Select dbStoryRights.stID from dbStoryRights where usID = lUserID)
        Order by dbStory.stName;
End;
$BODY$
  LANGUAGE plpgsql STABLE
  COST 100
  ROWS 1000;
ALTER FUNCTION stloadstoryview(integer)
  OWNER TO postgres;

将返回


"(2,"Story 201",admin,2015-01-01,2015-06-30)"
"(1,Story101,admin,2015-03-01,2015-04-30)"

在第一行,它将返回带有引号的“Story 201”和第二行“Story101”,这是不引用的.....

如果值之间的空格返回引号,那么如何在没有qoutes的情况下获取该列中的所有值。在值中保留空格。

sql postgresql stored-functions
1个回答
0
投票

看起来您正在直接查询该函数,该函数将返回包含函数返回的所有值的单个列。

尝试从函数中选择字段:

SELECT *
FROM stloadstoryview(1);

这将在单独的列中返回数据:

"stid", "stname", "stowner", "stbegin", "stend"
2, Story 201, admin, 2015-01-01, 2015-06-30
1, Story101, admin, 2015-03-01, 2015-04-30
© www.soinside.com 2019 - 2024. All rights reserved.