首页 > 解决方案 > 为什么我收到“[42883] 错误:运算符不存在:未知 + 文本”响应?

问题描述

我有一个非常简单的函数,它接受_posttypeid_url作为参数:

CREATE FUNCTION rewrite(_postid integer DEFAULT NULL::integer,
                                       _url character varying DEFAULT NULL::character varying)
    RETURNS TABLE
            (
                DestinationURL             varchar,
            )
    LANGUAGE plpgsql
AS
$function$
BEGIN
RETURN QUERY
                SELECT 
                NULL AS PostTypeID,
                _url      AS DestinationURL,
                      
                FROM reference.destinations dest1
            
                WHERE length(TRIM(dest1.DestinationURL)) > 0
                AND _url LIKE '%' + TRIM(dest1.DestinationURL)) + '%'
                ORDER BY length(dest1.DestinationURL)) DESC
                LIMIT 1;
END;
$function$

如果我运行,select * from public.rewrite(_url := 'wikipedia.org')则会收到此错误:

[42883] 错误:运算符不存在:未知 + 文本

提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。

我显然是在传递文本作为_url参数的值。我不明白错误的含义或如何修复它。

标签: postgresqlpostgresql-13

解决方案


推荐阅读