在下面的SELECT语句中,我将varchar2转换为整数值。如果演员表失败,我如何返回NULL
?如果文本,例如CAST将失败。 '狗'不能转换为整数。该列包含存储为字符串(varchar2)和NULL
的整数。
SELECT CAST(text_column AS NUMBER(*,0)) column_alias
FROM schema.table@dblink;
更新 - SELECT * FROM V$VERSION;
显示Oracle Database 12c Enterprise Edition Release 12.1.0.2.0
答案 0 :(得分:2)
如果您使用的是Oracle 12.2,则可以将TO_NUMBER与新的ON CONVERSION ERROR子句一起使用。见http://docs.oracle.com/database/122/SQLRF/TO_NUMBER.htm#SQLRF06140
示例:
select to_number('dog' default null on conversion error) from dual;
答案 1 :(得分:0)
您需要检查该值是否确实是一个整数并自行处理; SQL中没有“错误处理”,就像过程语言一样。
例如,如果您没有太多数据,使用正则表达式进行检查可能没问题。
像
这样的东西select cast ( case when regexp_like(text_column, '^(+|-)?\d+$')
then text_column -- else NULL; this is the default anyway
end
as number(*,0)
) as column_alias
from .......