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

Plsql 需要查找不为null且为数字(10,0)的行,plsql,Plsql,有人能帮忙吗 我需要检查一个列,比如COL_a,如果它不是null,并且是数字10,0 需要检查并查找不为null且为数字10,0的行 请提供帮助您应该创建一个函数来验证数字,并使用NVL函数进行空验证: 要运行的代码: CREATE OR REPLACE FUNCTION isNumeric(strVal IN VARCHAR2) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE IS numericVal NUMBER; BEGIN nu

有人能帮忙吗

我需要检查一个列,比如COL_a,如果它不是null,并且是数字10,0

需要检查并查找不为null且为数字10,0的行


请提供帮助

您应该创建一个函数来验证数字,并使用NVL函数进行空验证: 要运行的代码:

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
调用函数的代码:

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

上面的答案可能是最好的回答。如果您想使用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;

列的当前数据类型是什么?