需要查找行不为null并且是数字(10,0)

时间:2014-11-20 15:56:38

标签: plsql

有人可以提供帮助吗。

我需要检查专栏," COL_A"如果它不是null并且是数字(10,0)。

需要检查并查找非空且为数字(10,0)的行。

请帮忙

2 个答案:

答案 0 :(得分:0)

您应该创建一个函数来验证数字并使用NVL函数进行Null验证:

代码功能:

CREATE OR REPLACE FUNCTION isNumeric(strVal IN VARCHAR2)
  RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE
IS
  numericVal NUMBER;
BEGIN
  numericVal := to_number(strVal);
  RETURN 'True';
EXCEPTION
  WHEN value_error THEN
    RETURN 'False';
END isNumeric;



调用函数的代码:

SELECT DECODE(isNumeric(NVL("COL_A", 'null')) = 'True', "COL_A", 0) AS "valor"
FROM myTable

答案 1 :(得分:0)

上面的答案可能是最好的回答。如果您想使用SQL而不是PL / SQL,则以下内容应该有效:

SELECT col_a
  FROM mytable
 WHERE regexp_like( col_a, '^[[:digit:]]*$' );

如果您正在使用PL / SQL并且需要在循环中处理记录:

DECLARE
  CURSOR mycur IS
    SELECT col_a
      FROM mytable
     WHERE regexp_like(col_a, '^[[:digit:]]*$');
BEGIN
  FOR myrec IN mycur LOOP
    DBMS_OUTPUT.PUT_LINE(col_a);
  END LOOP;
END;