oracle在sql中判断字段值是数字还是字符串

1. oracle在sql中判断字段值是数字还是字符串:
SELECT nvl2(TRANSLATE('123','/1234567890','/'),'CHAR','NUMBER') FROM dual;

《oracle在sql中判断字段值是数字还是字符串》 验证是数字的场景
《oracle在sql中判断字段值是数字还是字符串》 验证是字符串的场景

2. 延伸应用:判断字段中包括哪几种类型
SELECT DISTINCT fuhao 
       FROM (
                SELECT nvl2(TRANSLATE(MS.STORE_CODE,'/1234567890','/'),'CHAR','NUMBER') fuhao 
                FROM MC_STORE MS
             );

《oracle在sql中判断字段值是数字还是字符串》 判断字段中包括哪几种类型

3. nvl2与函数介绍

NVL2(E1, E2, E3)的功能为:如果E1为NULL,则函数返回E3,若E1不为null,则返回E2;

TRANSLATE(string,from_str,to_str) 的功能:返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字符以后的string。TRANSLATE 是 REPLACE 所提供的功能的一个超集。

如果 from_str 比 to_str 长,那么在 from_str 中而不在 to_str 中的额外字符将从 string 中被删除,因为它们没有相应的替换字符。to_str 不能为空。Oracle 将空字符串解释为 NULL,并且如果TRANSLATE 中的任何参数为NULL,那么结果也是 NULL。

    原文作者:夏一
    原文地址: https://www.jianshu.com/p/3cfc84cf3b96
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞