Postgresql功能无法正常工作

时间:2016-01-15 22:27:09

标签: postgresql

为什么我的功能只返回邮政编码的一半?

我的意思是,如果我做

insert into address(zip_code) values(99-100)

它没有正常工作,因为它只添加" 99 - "。

CREATE FUNCTION normalize_zip_code() RETURNS trigger AS $$
BEGIN
    if length(NEW.zip_code)<=4 and length(NEW.zip_code)>=6 then
         RAISE EXCEPTION 'Wrong zip code!';
    elsif length(NEW.zip_code)=6 and (SUBSTRing(NEW.zip_code, 3, 1)='-') then
         NEW.zip_code:= concat((SUBSTRing(NEW.zip_code, 1, 2))::varchar(2),(SUBSTRING(NEW.zip_code, 3, 1))::varchar(1), (SUBSTRING(NEW.zip_code, 3, 5))::varchar(3));
         return NEW;
    else
            NEW.zip_code := concat((SUBSTRing(NEW.zip_code, 1, 2))::varchar(2),'-' (SUBSTRING(NEW.zip_code, 3, 5))::varchar(3));
            RETURN NEW;
        end if;
        END;
        $$ language plpgsql; 

0 个答案:

没有答案