从 PostgreSQL 函数返回 table 时如何删除或转义双引号
How to remove or escape the double quotes while returning table from PostgreSQL function
你好,我有一个 PostgreSQL 函数 returns table
-- 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;
这将 return
"(2,"Story 201",admin,2015-01-01,2015-06-30)"
"(1,Story101,admin,2015-03-01,2015-04-30)"
第一行 return "Story 201" 带引号,第二行 "Story101" 不带引号.....
如果值之间的空格被 returning 引用,那么如何在值中没有 qoutes.Having 空格的情况下获取该列中的所有值。
看起来您正在直接查询函数,该函数将 return 包含从函数 return 编辑的所有值的单个列。
尝试从函数中选择字段:
SELECT *
FROM stloadstoryview(1);
这将 return 数据分列:
"stid", "stname", "stowner", "stbegin", "stend"
2, Story 201, admin, 2015-01-01, 2015-06-30
1, Story101, admin, 2015-03-01, 2015-04-30
你好,我有一个 PostgreSQL 函数 returns table
-- 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;
这将 return
"(2,"Story 201",admin,2015-01-01,2015-06-30)"
"(1,Story101,admin,2015-03-01,2015-04-30)"
第一行 return "Story 201" 带引号,第二行 "Story101" 不带引号.....
如果值之间的空格被 returning 引用,那么如何在值中没有 qoutes.Having 空格的情况下获取该列中的所有值。
看起来您正在直接查询函数,该函数将 return 包含从函数 return 编辑的所有值的单个列。
尝试从函数中选择字段:
SELECT *
FROM stloadstoryview(1);
这将 return 数据分列:
"stid", "stname", "stowner", "stbegin", "stend"
2, Story 201, admin, 2015-01-01, 2015-06-30
1, Story101, admin, 2015-03-01, 2015-04-30