2

テーブル入力を使用し、ステップからデータを挿入して置き換える場合はどうなりますか?SQLで。

例えば、

select * from a where b in (?)

mysqlログから、SQLはselect * from a where b in ('0,1,2,3')

'なしで実行するにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

私が見る3つの可能なアプローチがあります。オプション「C」が一番好きだと思います。

A) IN 句に常に 4 つの値しかないことがわかっている場合は、ジョブ変数に 4 つの値を格納し、Get Variables ステップでそれらを 1 つの行に読み取り、その行をデータベース ルックアップに流し込むことでそれを行うことができます。ステップの SQL は次のようになります。

select * from a where b in (?, ?, ?, ?)

単一の着信行の値を置き換えます。

B) 可変数の値がある場合、値のリストを行に正規化することを検討します。おそらく、[フィールドを行に分割] ステップを使用し、[定数を追加] を使用して各行に「見つかった」値を追加し、それらをストリーム ルックアップ。次に、ストリーム ルックアップの後、「見つかった」値が null であるすべての行をダミー ステップにフローします。

C) Job で値リストを作成し、それを変数として渡します。テーブル入力ステップで、次のようなステートメントを使用します。

select * from a where b in (${varname})

「変数スクリプトの置換」にチェックを入れます。変数は、実行前に SQL に展開されます。

于 2013-01-30T20:33:33.413 に答える