我想知道这到底是怎么回事?
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本身似乎有效。 感谢。
答案 0 :(得分:1)
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;
答案 1 :(得分:0)
不应该更像:
(E'[0-9]{2,3}\\.[0-9]{1,3}\\.' || v_year || E'\\.[0-9]{1,3}')
...就像在,你按原样使用文字v_year,而不是将其值与表达式的另外两个边连接。