Opensips avp_db_query 无法比较空值
Opensips avp_db_query can't compare null value
我正在使用 avp_db_query 检索我的 table 行,有时一个字段值为空。但是当我使用 if 条件时它不遵循并继续前进。
avp_db_query("select status from orders where id = 1", "$avp(status);")
现在如果我写条件
if($avp(status)==1){
do success
} else {
do failure
exit();
}
以上条件在失败状态下不起作用并继续,但是当我放置两个 if 条件并检查它是否等于 1 或等于 0 时它起作用。
另一个问题是,如果此列具有空值,则没有任何作用,它会继续发出以下警告。
WARNING:core:comp_scriptvar: invalid EQUAL operation: left is
VARIABLE_ELEMENT/STRING_VAL, right is NUMBER/NO_VAL
您可以使用以下方法测试 NULL
SQL 列值:
if ($avp(status) == "<null>")
... 相当于:
if ($(avp(status)[0]) == "<null>")
考虑到 $avp(status) = NULL;
语句旨在删除 AVP 堆栈中最顶层的值,这是我们使它起作用的唯一方法。
如果您声称 else
语句没有在应该执行的时候执行,请单独给出一个 minimally viable example, along with the output of opensips -V
, possibly opening up a new issue。
我正在使用 avp_db_query 检索我的 table 行,有时一个字段值为空。但是当我使用 if 条件时它不遵循并继续前进。
avp_db_query("select status from orders where id = 1", "$avp(status);")
现在如果我写条件
if($avp(status)==1){
do success
} else {
do failure
exit();
}
以上条件在失败状态下不起作用并继续,但是当我放置两个 if 条件并检查它是否等于 1 或等于 0 时它起作用。
另一个问题是,如果此列具有空值,则没有任何作用,它会继续发出以下警告。
WARNING:core:comp_scriptvar: invalid EQUAL operation: left is
VARIABLE_ELEMENT/STRING_VAL, right is NUMBER/NO_VAL
您可以使用以下方法测试 NULL
SQL 列值:
if ($avp(status) == "<null>")
... 相当于:
if ($(avp(status)[0]) == "<null>")
考虑到 $avp(status) = NULL;
语句旨在删除 AVP 堆栈中最顶层的值,这是我们使它起作用的唯一方法。
如果您声称 else
语句没有在应该执行的时候执行,请单独给出一个 minimally viable example, along with the output of opensips -V
, possibly opening up a new issue。