1. oracle在sql中判断字段值是数字还是字符串:
SELECT nvl2(TRANSLATE('123','/1234567890','/'),'CHAR','NUMBER') FROM dual;
网络异常,图片无法展示
|
验证是数字的场景
网络异常,图片无法展示
|
验证是字符串的场景
2. 延伸应用:判断字段中包括哪几种类型
SELECT DISTINCT fuhao FROM ( SELECT nvl2(TRANSLATE(MS.STORE_CODE,'/1234567890','/'),'CHAR','NUMBER') fuhao FROM MC_STORE MS );
网络异常,图片无法展示
|
判断字段中包括哪几种类型
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。