我正在尝试将脏输入解析为postgres表.我有一个'日期'字段的问题,偶尔包含非日期,如'00000000'或'20100100'.pg拒绝接受这些,这是正确的.
有没有办法让postgres识别无效日期(或者只有有效日期,如果效果更好),那么我可以替换合理的默认值吗?
(我已经考虑建立一个表格,列出我愿意接受的日期,并在子选项中使用它,但这看起来非常不优雅.)
干杯,
尤尔根
http://www.tek-tips.com/viewthread.cfm?qid=1280050&page=9
比上述更通用的方法:
create function safe_cast(text,anyelement)
returns anyelement
language plpgsql as $$
begin
$0 := $1;
return $0;
exception when others then
return $2;
end; $$;
Run Code Online (Sandbox Code Playgroud)
像这样使用:
select safe_cast('Jan 10, 2009', '2011-01-01'::timestamp)
select safe_cast('Jan 10, 2009', null::timestamp)
Run Code Online (Sandbox Code Playgroud)
归功于#postgresql irc频道的友好家伙.:)
归档时间: |
|
查看次数: |
3004 次 |
最近记录: |