检查带有Firebird的字符串列表中的整数值

时间:2013-09-08 11:46:27

标签: sql firebird

我正在编写存储过程,我需要检查整数变量值是否在列表中。

我试过这个

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

这项工作,但数字列表将从varchar字段返回给我,所以有没有办法仍然使用IN而不使用临时表。

2 个答案:

答案 0 :(得分: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 ...

答案 1 :(得分:0)

只是提供另一种可能的解决方案:

valList = '2,3,4';  --- varchar
val = 3;  --- integer

if ( valList like '%'||val||'%' ) then ...