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 ...