このディレクトリの索引
http://pc11.2ch.net/test/read.cgi/db/1252492296/944
# num0からnum50までの連番でフィールドがあるのですが、 
# この中で、レコードの値が0より大きいものをSELECTするにはどうしたらいいでしょうか? 
# ワイルドカード的な書き方はないのでしょうか? 

'num0からnum50までの連番でフィールドの中で0より大きいものを選択'(L) :-
        フィールド名の連番を作る(_フィールド名ならび),
        選択項を変数引数で構成し(_選択項,_引数ならび),
        call(P),
        findall([_フィールド名,_値],
                    フィールドの中で0より大きいもの(_フィールド名ならび,_引数ならび,_フィールド名,_値),
                L).

フィールドの中で0より大きいもの(_フィールド名ならび,L2,_フィールド名,_値) :-
        for(1,M,51),
        list_nth(M,L2,_値),
        _値 > 0,
        list_nth(M,_フィールド名ならび,_フィールド名).

フィールド名の連番を作る(_フィールド名ならび) :-
        findall(S,(for(0,N,50),concat_atom([num,N],S)),_フィールド名ならび).

選択項を変数引数で構成し(_選択項,_変数ならび) :-
        length(_変数ならび,51),
        _選択項 =.. [テーブル|_変数ならび].