有人可以提供帮助吗。
我需要检查专栏," COL_A"如果它不是null并且是数字(10,0)。
需要检查并查找非空且为数字(10,0)的行。
请帮忙
答案 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;