Mik*_*eCW 46 sql postgresql coalesce
我正在尝试创建最快的COALESCE()接受两个或多个参数,并返回第一个非null AND非空("")值.
我正在使用这个:
CREATE OR REPLACE FUNCTION coalescenonempty(VARIADIC in_ordered_actual varchar[])
RETURNS varchar AS $$
SELECT i
FROM (SELECT unnest($1) AS i) t
WHERE i IS NOT NULL AND i <> ''
LIMIT 1;
$$ LANGUAGE sql;
Run Code Online (Sandbox Code Playgroud)
它非常快,但仍然没有COALESCE或CASE WHEN语句那么快.
你怎么看?
Dwa*_*ell 86
不要创建用户功能是你想要的速度.而不是这个:
coalescenonempty(col1,col2||'blah',col3,'none');
Run Code Online (Sandbox Code Playgroud)
做这个:
COALESCE(NULLIF(col1,''),NULLIF(col2||'blah',''),NULLIF(col3,''),'none');
Run Code Online (Sandbox Code Playgroud)
也就是说,对于每个非常量参数,用实例参数括起来NULLIF( x ,'')
.
归档时间: |
|
查看次数: |
33333 次 |
最近记录: |