このディレクトリの索引
http://toro.2ch.net/test/read.cgi/db/1343899481/281
#  SQL Server 2000においてです。 
#   
#  テーブルのフィールドに電話番号、携帯番号、FAX とあった場合、これらから例えば"0123"と検索するのに 
#  Or で接続する以外に検索する方法はありますか? 
#   
#  普通?に考えれば以下の方になるかと思いますが、これを簡易的?にインデックスが利く状態で書き換えたい。 
#  > SELECT *  
#  > FROM Tablehoge 
#  > WHERE (電話番号="0123") OR (携帯番号="0123") OR (FAX="0123") 
#   
#  なので以下の様なものは却下になります。 
#  > SELECT *  
#  > FROM Tablehoge 
#  > WHERE "|" & 電話番号 & "|" & 携帯番号 & "|" & FAX & "|" Like "*|0123|*" 
# 
# 

'テーブルのフィールドに電話番号、携帯番号、FAX とあった場合、これらから例えば"0123"と検索するのにOr による遅い検索'(_電話番号,_携帯番号,_FAX) :-
        setof([_電話番号,_携帯番号,_FAX],[_電話番号,_携帯番号,_FAX] ^ (
                    'Or による遅い検索'(_電話番号,_携帯番号,_FAX)),LL),
        member([_電話番号,_携帯番号,_FAX],LL).

'Or による遅い検索'(_電話番号,_携帯番号,_FAX) :-
        テーブル(_電話番号,_携帯番号,_FAX),
        sub_atom(_電話番号,_,4,_,'0123').
'Or による遅い検索'(_電話番号,_携帯番号,_FAX) :-
        テーブル(_電話番号,_携帯番号,_FAX),
        sub_atom(_携帯番号,_,4,_,'0123').
'Or による遅い検索'(_電話番号,_携帯番号,_FAX) :-
        テーブル(_電話番号,_携帯番号,_FAX),
        sub_atom(_Fax,_,4,_,'0123').

'テーブルのフィールドに電話番号、携帯番号、FAX とあった場合、これらから例えば"0123"と検索するのにOr で検索する'(_電話番号,_携帯番号,_FAX) :-
        テーブル(_電話番号,_携帯番号,_FAX),
        'Orで検索する'(_電話番号,_携帯番号,_FAX).

'Orで検索する'(_電話番号,_携帯番号,_FAX) :-
        sub_atom(_電話番号,_,4,_'0123'),!.
'Orで検索する'(_電話番号,_携帯番号,_FAX) :-
        sub_atom(_携帯番号,_,4,_'0123'),!.
'Orで検索する'(_電話番号,_携帯番号,_FAX) :-
        sub_atom(_Fax,_,4,_'0123').

'テーブルのフィールドに電話番号、携帯番号、FAX とあった場合、これらから例えば"0123"と検索するのにOr 以外で検索する'(_電話番号,_携帯番号,_FAX) :-
        テーブル(_電話番号,_携帯番号,_FAX),
        'Or以外で検索する'(_電話番号,_携帯番号,_FAX).

'Or以外で検索する'(_電話番号,_携帯番号,_FAX) :-
        atomic_list_concat([_電話番号,_携帯番号,_FAX],S),
        sub_atom(S,_,4,_,'0123'),!.