4

ストアド プロシージャを作成しており、整数変数の値がリスト内にあるかどうかを確認する必要があります。

私はこのようにしてみました

If (var_int1 in (4,6,9) ) then ....

INこれは機能しますが、数字のリストはvarcharフィールドから返されるので、一時テーブルを使用せずに引き続き使用する方法はありますか.

4

2 に答える 2

3

組み込み関数positionを使用できます。

if(position(val IN valList) > 0)then

数値の一部のみが一致する誤検出を回避する必要があることに注意してください。つまり、'123,456,789'位置の値'2'が true を返す場合、これはおそらく望ましくありません。検索文字列のプレフィックスとサフィックスとしてコンマを追加することを避けるために (varchar フィールドにコンマで区切られた値があるため)、つまり

val = ',' || cast(var_int1 as varchar(10)) || ',';
valList = ',' || valList || ',';
if(position(val IN valList) > 0)then ...
于 2013-09-08T12:14:53.077 に答える