我有一个格式化为数字的列,但似乎包含一些其他值,这些值导致我的其他函数(Rtrim,Xmlagg,Xmlelement,Extract)出现问题,导致整个查询失败(如果我把这个专栏拿出来了)。
有人能告诉我将有效数字中的任何内容替换为0的最佳方法(或者像99999这样的占位符号)吗?
我尝试了以下操作但猜测这只包括空值,而不是空字符串或空字符串,我认为我必须先替换它。
TO_CHAR(NVL(a.mycolumn, 0))
非常感谢提前,
麦克
答案 0 :(得分:3)
在Oracle中,您应该可以使用TRIM()
:
NVL(TRIM(a.mycolumn), '0')
Oracle(默认情况下)将空字符串视为NULL
。
请注意,这会修剪结果,即使它不是NULL
。如果不合适,请使用CASE
:
(CASE WHEN TRIM(a.mycolumn) IS NULL THEN '0' ELSE a.myolumn END)
答案 1 :(得分:3)
使用REGEXP_LIKE
对于数字:
REGEXP_LIKE (numeric_value, '^\d+(\.\d+)?$')
或null
REGEXP_LIKE(NVL(value, 'NULL'), '^\d+(\.\d+)?$|NULL$')