以下を理解するために、いくつかの疑似ロジックを考え出そうとしています。
約10万件のレコードを持つテーブルがあります
主キーは、次のような ID です。
ID, col1, col2, col3
A3242X,,,
B323X,,,
A3242Y,,,
Y32YXX,,,
A3242XABC123
これで、andY32
と ... と ...などのユーザー入力ができました 。
私の出力は、テーブル内の ID が入力値のいずれかで始まる、または入力値のいずれかが Id テーブル内の任意の値で始まるテーブル内のすべてのレコードを把握することです。
この場合、出力は次のようになります。
A3242X (ID A3242XABC123 begins with this) and
Y32YXX (the input Y32 begins with this).
私の考えでは、入力値をループして比較し、最後から文字を減算します....など
search_var=A3242XABC123;
Loop
select id from table where value = search_var;
if found exit;
search_var = substr(search_var, 0,length(search_var-1));
end;
-- 基本的に、値が見つかるまでループします。
-- 2番目のシナリオでは、次のようなことができると思います
search_var[1] = A3242XABC123;
search_var[2] = Y32YXX;
for i = 1 to 2 loop
select id from table where id begins search_var;
add id to result array;
end;
これを行う効率的な方法を探しています。ほとんどの場合、ユーザーはおそらく数十の ID しか入力しません。