PostgreSQL:如何选择一组文本字段为变量?

时间:2016-08-10 13:02:00

标签: postgresql function

如何在PGSQL中执行以下操作: 我有一个SQL Server函数

CREATE FUNCTION [dbo].[gettags] 
(   
    @id UNIQUEIDENTIFIER
)
RETURNS NVARCHAR(1024) 
AS
BEGIN
DECLARE @s NVARCHAR(1024);
DECLARE @m NVARCHAR(2);
SELECT  @s = N'', @m=N'';
SELECT @s=@s+@m+word, @m=N',' from dbo.tags where id=@id AND LEN(ISNULL(word,N''))>0;
IF LEN(@s)>0
    RETURN @s;
RETURN NULL;
END

我正在尝试在PGSQL中创建相应的函数。 我如何选择结果字段集到变量中,就像在示例中一样?

1 个答案:

答案 0 :(得分:1)

使用我的 - 相当基础 - 了解SQL Server编程,您似乎想要使用逗号word作为分隔符来聚合表dbo.tags的{​​{1}}列中的值。排除,和空字符串值。在PostgreSQL中,这比在SQL Server中容易得多:

NULL

由于这是一个单独的SQL语句,因此它是CREATE FUNCTION dbo.gettags (_id integer) RETURNS text AS $$ SELECT string_agg(word, ',') FROM dbo.tags WHERE id = _id AND word IS NOT NULL AND length(word) > 0; $$ LANGUAGE sql; 函数,而不是sql,它更有效。您甚至可以完全忘记该函数并直接使用SQL语句。