我想知道这到底出了什么问题?
CREATE OR REPLACE FUNCTION maxNumber(int4)
RETURNS int4 AS $$
DECLARE
v_year ALIAS FOR $1;
BEGIN
RETURN (
SELECT count(*)
FROM table
WHERE stringcol ~ '[0-9]{2,3}.[0-9]{1,3}.v_year.[0-9]{1,3}'
);
END;
$$ LANGUAGE 'plpgsql' VOLATILE;
它始终返回 0。SQL本身似乎可以工作。谢谢。
CREATE OR REPLACE FUNCTION maxNumber(int4)
RETURNS int4 AS $$
DECLARE
BEGIN
RETURN (SELECT
coalesce(
MAX(
CAST(
substring(stringcol, '[0-9]{1,3}$')
AS int)
)
, 0)
FROM table
WHERE stringcol ~ (E'\' || '.' || to_char($1, 'FM09') || E'\' || '.[0-9]{1,3}$'));
END;
$$ LANGUAGE 'plpgsql' VOLATILE;
那不应该更像:
(E'[0-9]{2,3}\.[0-9]{1,3}\.' || v_year || E'\.[0-9]{1,3}')
。如 in,您按原样使用文本v_year,而不是将其值与表达式的其他两面连接起来。