在DB2中将String转换为Integer时避免出错

del*_*nce 2 sql db2

我要选择的是被定义为一列VARCHAR,作为INTEGER这样的:

SELECT ID, CAST(Col1 as INT) as MyOutput FROM MyTABLE
Run Code Online (Sandbox Code Playgroud)

问题是当列具有无效格式(无法转换为整数)时我想将它们设置为NULL.有没有办法在DB2中执行此操作?

mus*_*cio 5

实现此目的的一种方法是编写自己的转换函数来处理格式异常,例如

create or replace function to_int_safe (str varchar(20)) 
returns int 
deterministic 
no external action contains sql 
begin 
  declare continue handler for sqlstate '22018' -- on conversion error
    return null; 
  return cast(str as int); 
end
Run Code Online (Sandbox Code Playgroud)

然后在您的查询中使用它:

SELECT ID, to_int_safe(Col1) as MyOutput FROM MyTABLE
Run Code Online (Sandbox Code Playgroud)