Oracle NVL函数在javascript / jQuery中等效

时间:2011-03-02 12:43:01

标签: javascript jquery

只是想知道在javascript / jQuery中是否存在等效的Oracle NVL函数 - 如果是这样,我会非常感谢它的工作原理。

感谢。

5 个答案:

答案 0 :(得分:9)

通常在这里使用

Ternary operator

例如,如果您在Apex中创建动态操作,则可以执行以下操作:

( $v("P1_VAL1") ? $v("P1_VAL1") : $v("P1_VAL2") )

如果它不为空,则返回P1_VAL1的值,否则返回P1_VAL2的值。

答案 1 :(得分:6)

在Javascript中,这实际上可以由||运算符处理,它返回第一个“有效”值。

var a = null;
var b = "valid value";
var c = a || b; // c == "valid value"

请注意,"falsy"值不仅是null,还包括空字符串'',数字0和布尔值false。因此,您需要确保您认为具有与null相同含义的那些或您的变量不能假设这些值,因为在这些情况下您还将获得第二个值:

var a = "";
var b = "valid value";
var c = a || b; // c == "valid value"

答案 2 :(得分:2)

function nvl(value1,value2) 
{
if (value1 == null)
return value2;
return value1;
}

答案 3 :(得分:2)

空合并运算符 (??)

空合并运算符 (??) 是一个逻辑运算符,当其左侧操作数为 null 或未定义时返回其右侧操作数,否则返回其左侧操作数。

var foo = null ?? 'default string';
console.log(foo);
// expected output: "default string"

var baz = 0 ?? 42;
console.log(baz);
// expected output: 0

答案 4 :(得分:-1)

这是我的价值所在的解决方案

var ignoreNaN = false;

function nullButNot0(val) {
    if (typeof val == 'number' && isNaN(val)) {
        if (!ignoreNaN)
            throw Error('NaN passed to nullButNot0()');
        return true;
    }
    if (typeof val == 'object') {
        try {
            if (val.constructor === Array)
                return false;
        } catch (e) {
        }
    }
    return (!val && val !== 0);
}

function nvl(s, defVal) {
    // WARNING: not guaranteed to work with blank arrays
    if (!nullButNot0(s))
        return s;
    if (!defVal)
        defVal = '';
    return defVal;
}