Quantcast
Channel: 配列タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 757

PostgreSQLで配列を0オリジンにする方法

$
0
0

結論。
arr := ('[0:'||array_length(arr,1)-1||']='||(arr::text))::int[];
すべし。

DO$do$DECLAREarrint[]:='{1,2,3,4}'::int[];BEGINRAISENOTICE'before';RAISENOTICE'arr=%',arr;RAISENOTICE'arr[0]=%',arr[0];RAISENOTICE'arr[1]=%',arr[1];RAISENOTICE'arr[2]=%',arr[2];RAISENOTICE'arr[3]=%',arr[3];RAISENOTICE'arr[4]=%',arr[4];arr:=('[0:'||array_length(arr,1)-1||']='||(arr::text))::int[];RAISENOTICE'after';RAISENOTICE'arr=%',arr;RAISENOTICE'arr[0]=%',arr[0];RAISENOTICE'arr[1]=%',arr[1];RAISENOTICE'arr[2]=%',arr[2];RAISENOTICE'arr[3]=%',arr[3];RAISENOTICE'arr[4]=%',arr[4];END;$do$;

↑実行すると、

NOTICE:  before
NOTICE:  arr={1,2,3,4}
NOTICE:  arr[0]=<NULL>
NOTICE:  arr[1]=1
NOTICE:  arr[2]=2
NOTICE:  arr[3]=3
NOTICE:  arr[4]=4
NOTICE:  after
NOTICE:  arr=[0:3]={1,2,3,4}
NOTICE:  arr[0]=1
NOTICE:  arr[1]=2
NOTICE:  arr[2]=3
NOTICE:  arr[3]=4
NOTICE:  arr[4]=<NULL>
DO

となる。


Viewing all articles
Browse latest Browse all 757

Trending Articles