Plsql 需要查找不为null且为数字(10,0)的行
有人能帮忙吗 我需要检查一个列,比如COL_a,如果它不是null,并且是数字10,0 需要检查并查找不为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
请提供帮助您应该创建一个函数来验证数字,并使用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;
列的当前数据类型是什么?