0

我需要验证一列在 oracle 中只有数字(仅限整数)。如果是,则将标志设置为 1,否则设置为 0。我正在尝试使用低于 reg_exp(但即使对于连字符也将标志设置为 1):

CASE WHEN REGEXP_LIKE(Column_name,'\d\) THEN 1 ELSE 0 END

示例:12345 应该(这是工作并且上面的代码将标志设置为 1)-1234 应该将标志设置为 0(上面的代码将其设置为 1)abcd 应该将标志设置为 0(上面的代码在这种情况下工作正确)123.23应将标志设置为 0

4

2 回答 2

3

如果您想检查是否仅包含数字,请尝试

CASE WHEN  REGEXP_LIKE(Column_name, '^[[:digit:]]+$') THEN 1 ELSE 0 END ;
于 2019-04-25T16:37:47.563 回答
1

你可以使用TRANSLATE函数

SELECT case when TRANSLATE(Column_name, 'X0123456789', 'X') is null
            then 1
            else 0
       end
FROM t;
于 2019-04-26T03:15:56.193 回答