我试图在 PostgreSQL 的 format() 函数中转义一个 '%' 字符。该函数根据列列表替换列值,删除返回 (\n) 并修剪字符串。
CREATE OR REPLACE FUNCTION eliminar_retornos(text) RETURNS VOID
AS $$
declare
i text;
fields text[] := ARRAY['direccion', 'localidad', 'calle', 'esq1', 'esq2', 'obs'];
BEGIN
FOREACH i IN ARRAY fields
loop
EXECUTE format(
'update %1$s set %2$s = trim(upper(replace(%2$s, E''\n'', '' '')))', $1, i)
;
END LOOP;
RAISE NOTICE 'Se actualizó la capa %', $1;
END
;
$$ LANGUAGE plpgsql;
我想改变这个函数,只替换那些有返回的字符串,使用类似的东西;
'update %1$s set %2$s = trim(upper(replace(%2$s, E''\n'', '' ''))) where %2$s LIKE E''%\n%''', $1, i)
问题是我不知道如何正确转义 format() 函数中“LIKE”的“%”。
很抱歉发布了一些不可复制的东西,我的知识仅限于实现这一点。
手册上明确写着: