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

时间:2015-03-26 14:41:40

标签: sql postgresql stored-functions

你好我有一个返回表

的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)"

在第一行中它将返回"故事201"引号和第二行" Story101"这是没有引用的......

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

1 个答案:

答案 0 :(得分: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