このディレクトリの索引
http://toro.2ch.net/test/read.cgi/db/1343899481/228
#  ご教示お願いいたします。 
#   
#  ・DBMS名とバージョン 
#  SQL Server2008 
#   
#  ・テーブルデータ 
#  テーブル名:住所_MST 
#  ID 住所 
#  ------------ 
#  001 住所A 
#  002 住所B 
#  003 住所C 
#  004 住所D 
#  005 住所E 
#  006 住所F 
#  008 住所G 
#  010 住所H 
#   
#  ・欲しい結果 
#  IDに007を設定してINSERTしたいのですが上手くSQL文が浮かびませんでした 
#  仕様としましては一番若いIDから、設定されていないIDを取得してINSERTします 
#  なお、IDはキー設定されています 
#   
#  結果は下記のようになります 
#  ID 住所 
#  ------------ 
#  001 住所A 
#  002 住所B 
#  003 住所C 
#  004 住所D 
#  005 住所E 
#  006 住所F 
#  007 新住所 
#  008 住所G 
#  010 住所H 
# 
# 

'・DBMS名とバージョン 
SQL Server2008 
 
・テーブルデータ 
テーブル名:住所_MST 
ID 住所 
------------ 
001 住所A 
002 住所B 
003 住所C 
004 住所D 
005 住所E 
006 住所F 
008 住所G 
010 住所H 
 
・欲しい結果 
IDに007を設定してINSERTしたいのですが上手くSQL文が浮かびませんでした 
仕様としましては一番若いIDから、設定されていないIDを取得してINSERTします 
なお、IDはキー設定されています 
 
結果は下記のようになります 
ID 住所 
------------ 
001 住所A 
002 住所B 
003 住所C 
004 住所D 
005 住所E 
006 住所F 
007 新住所 
008 住所G 
010 住所H '(_住所) :-
        '一番若いIDから、設定されていないIDを取得してINSERTします'(_住所).


'一番若いIDから、設定されていないIDを取得してINSERTします'(_住所) :-
        between(1,999,N),
        頭部零文字列(3,N,_ID),
        \+(住所_MST(_ID,_)),
        assertz(住所_MST(_ID,_住所)),!.

頭部零文字列(_長さ,_整数,_頭部零文字列) :-
        length(_頭部零文字ならび,_長さ),
        number_chars(_整数,Chars),
        append(L0,Chars,_頭部零文字ならび),
        all(L0,'0'),
        atom_chars(_頭部零文字列,_頭部零文字ならび),!.

all([],_).
all([A|R],A) :-
        all(R,A).