【问题标题】:Invalid Relational Operator In this query此查询中的关系运算符无效
【发布时间】:2014-11-27 21:22:49
【问题描述】:

您好下午好,我有这个查询,我正在尝试执行,但在最后两行给我带来了 Invalid Relational Operator Error

UPDATE table1 tpg
   SET comentarios = comentarios
               ||'Tipo de Cambio Inválido ó Nulo:'
               ||campo_10,
       estatus = 'RE'            
WHERE num_cia = :v_num_cia
   AND num_usuario =:v_num_usuario
   AND reg_saai =: v_Interfase
   AND estatus <>'RE'
   AND (CAMPO_10 IS NULL
   OR NOT (FU_IS_NUMBER(CAMPO_10)))

【问题讨论】:

    标签: database oracle subquery logic operators


    【解决方案1】:

    我想FU_IS_NUMBER 是一个返回BOOLEAN 的函数

    Oracle SQL 根本不支持Boolean,因此您需要更改函数以返回数字,例如 (1/0)。

    如果您的函数检查天气参数是一个数字,您可以使用正则表达式。例如:

    not regexp_like(CAMPO_10, '^-?[[:digit:]]*[.]?[[:digit:]]*$')
    

    【讨论】:

    • 是的,fu_is_number 返回一个布尔值。或者我有其他函数需要一个 varchar 2 并返回一个数字,但出现同样的错误,campo_10 是一个 varchar2 但它 100% 确定在这种情况下是数字,由于其他验证,我只需要确保它不为 null 或其中包含字符
    • @Carlos 对于另一个函数,会出现相同的错误,因为 NOT 不是有效的逻辑条件(例如,“where not 1” - 这是错误的)。如果您的第二个函数返回数字,请尝试以下操作:OR FU_IS_NUMBER2(CAMPO_10) IS NOT NULL
    猜你喜欢
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 2020-01-29
    • 2012-11-15
    • 2014-09-17
    • 2018-08-07
    • 2019-11-20
    相关资源
    最近更新 更多