如何在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中创建相应的函数。 我如何选择结果字段集到变量中,就像在示例中一样?
答案 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语句。