Postgresql 8.4 喜欢 Concat

Postgresql 8.4 Like Concat

我在 postgresql 9.3 中的查询是:

SELECT *
    FROM route
    WHERE 'my/uri/address' LIKE CONCAT(c_uri, '%')

但是在 postgresql 8.4 中这段代码不起作用。

请问我该如何解决?

提前致谢!

在 PostgreSQL 8.4 版本中,字符串连接使用 || 操作。

示例:'Post' || 'greSQL'

结果是:PostgreSQL

您也可以使用 WS_CONCAT 函数,但它在 8.4 中没有定义。您可以声明如下:

CREATE OR REPLACE FUNCTION concat_ws(
   separator text,
   VARIADIC names_array text[]
)
RETURNS text
LANGUAGE plpgsql
AS $$
BEGIN
    RETURN array_to_string(array_remove(names_array, NULL), ' ');
END;
$$;

此定义与 9.x 及更高版本中的定义完全相同:首先传递分隔符文本,然后传递任意数量的文本以进行连接。 NULL 值被过滤掉。

示例:

SELECT WS_CONCAT(' ', 'Ford', 'Focus', NULL /* Missing body-style */, '1.8 L')

结果:Ford Focus 1.8 L