Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用Firebird检查字符串列表中是否存在整数值_Sql_Firebird - Fatal编程技术网

Sql 使用Firebird检查字符串列表中是否存在整数值

Sql 使用Firebird检查字符串列表中是否存在整数值,sql,firebird,Sql,Firebird,我正在编写一个存储过程,需要检查整型变量值是否在列表中 我试过这样做 If (var_int1 in (4,6,9) ) then .... 这是可行的,但数字列表将从varchar字段返回给我,因此有没有办法在中仍然使用,而不使用临时表。您可以使用内置函数: 请注意,如果只有部分数字匹配,则需要避免误报,即给定'123456789'位置的值'2'将返回您可能不希望的true。为了避免这种情况,可以将逗号(因为varchar字段中有逗号分隔的值)作为前缀和后缀添加到搜索字符串中,即 val =

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

我试过这样做

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

这是可行的,但数字列表将从varchar字段返回给我,因此有没有办法在中仍然使用
,而不使用临时表。

您可以使用内置函数:

请注意,如果只有部分数字匹配,则需要避免误报,即给定
'123456789'
位置的值
'2'
将返回您可能不希望的true。为了避免这种情况,可以将逗号(因为varchar字段中有逗号分隔的值)作为前缀和后缀添加到搜索字符串中,即

val = ',' || cast(var_int1 as varchar(10)) || ',';
valList = ',' || valList || ',';
if(position(val IN valList) > 0)then ...

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

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

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

如果valList='2,33,4'呢?
valList = '2,3,4';  --- varchar
val = 3;  --- integer

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