GVKun编程网logo

更新查询if语句是否适用于Oracle(查询并更新语句oracle)

31

在本文中,您将会了解到关于更新查询if语句是否适用于Oracle的新资讯,同时我们还将为您解释查询并更新语句oracle的相关在本文中,我们将带你探索更新查询if语句是否适用于Oracle的奥秘,分析

在本文中,您将会了解到关于更新查询if语句是否适用于Oracle的新资讯,同时我们还将为您解释查询并更新语句oracle的相关在本文中,我们将带你探索更新查询if语句是否适用于Oracle的奥秘,分析查询并更新语句oracle的特点,并给出一些关于asp.net-mvc-3 – Razor查看if语句是否正确、c – if语句是否保证不被评估超过必要的?、CONTAINS不适用于Oracle Text、if语句仅适用于某些值的实用技巧。

本文目录一览:

更新查询if语句是否适用于Oracle(查询并更新语句oracle)

更新查询if语句是否适用于Oracle(查询并更新语句oracle)

我需要在oracle表中更新新创建的列。为此,我需要使用行中的现有值来决定如何填充此列,但出现错误:

java.lang.NullPointerException -> See Debug Output for details

这是我的查询:

UPDATE    SCHEMA_NAME.TABLE_NAMESET    OCO= IF CO= ''Y'' AND COM=''Y'' THEN {    ''Y''} ELSE{    ''N''}END IF;

关于语法有什么建议吗?

答案1

小编典典

您可以在子句中使用 CASE 表达式SET

例如,

UPDATE tableSET schema.column =  CASE                        WHEN CO= ''Y'' AND COM=''Y'' THEN                          ''Y''                        ELSE                          ''N''                     END

asp.net-mvc-3 – Razor查看if语句是否正确

asp.net-mvc-3 – Razor查看if语句是否正确

我的最后一个’if’语句呈现为文本.我该如何解决这个问题?

看看第二个’if’语句的灰色突出显示是如何在最后一个’if’语句结束时完成的?

谢谢

解决方法

Razor认为之前的if还没有结束,因为你仍然在< div> s里面.

您需要在< div>前加上@:前缀,以防止Razor匹配标记.

c – if语句是否保证不被评估超过必要的?

c – if语句是否保证不被评估超过必要的?

参见英文答案 > Is short-circuiting logical operators mandated? And evaluation order?7个
> How does C++ handle &&? (Short-circuit evaluation) 7个
鉴于两个条件与&&连接.我知道评估的顺序是从左到右.但是如果第一个条件解析为false,那么第二个条件保证不会被评估?
#define SIZE
bool array[SIZE];
int index;

// play with variables
// ...

if(index < SIZE && array[index])
{
    // ...
}

在此示例中,如果第一个条件为false,则不能评估第二个条件,因为数组中的访问将超出范围.

顺便说一句,我不能简单地使用两个if语句嵌套条件,因为实际上我需要逆像(!(in_range&& get_element)).使用嵌套语句,我需要使用goto跳过下面的代码块.

解决方法

But if the first condition resolves to false,it the second condition guaranteed to not get evaluated?

是的,这是C的短路.根据C 11标准第5.14 / 1段:

The && operator groups left-to-right. The operands are both contextually converted to bool (Clause 4).
The result is true if both operands are true and false otherwise. Unlike &,&& guarantees left-to-right
evaluation: the second operand is not evaluated if the first operand is false.

As MatthieuM. correctly mentions in the comments,以上仅适用于内置逻辑AND和逻辑OR运算符:如果这些运算符过载,则调用它们将被视为常规函数调用(因此不应用短路并且不保证评估顺序).

如第5/2段所述:

[Note: Operators can be overloaded,that is,given meaning when applied to expressions of class type (Clause
9) or enumeration type (7.2). Uses of overloaded operators are transformed into function calls as described
in 13.5. Overloaded operators obey the rules for Syntax specified in Clause 5,but the requirements of
operand type,value category,and evaluation order are replaced by the rules for function call
. […] —end note ]

CONTAINS不适用于Oracle Text

CONTAINS不适用于Oracle Text

我在执行此查询时遇到问题。

SELECT * FROM gob_attachment 
WHERE CONTAINS (gob_a_document,'java') > 0

给我

ORA-29902: error in executing ODCIIndexStart() routine
ORA-20000: Oracle Text error: 
ORA-00942: table or view does not exist

29902. 00000 -  "error in executing ODCIIndexStart() routine"
*Cause:    The execution of ODCIIndexStart routine caused an error.
*Action:   Examine the error messages produced by the indextype code and
       take appropriate action.

经过一番谷歌搜索后,我发现问题可能出在索引上,但是当我查看表和索引时,对我来说似乎还可以。

创建索引脚本看起来像这样

CREATE INDEX FTSI_GOB_A_DOCUMENT 
 ON GOB_ATTACHMENT (GOB_A_DOCUMENT) 
 INDEXTYPE IS CTXSYS.CONTEXT;

唯一令我感到奇怪的是,当我在SQL
Developer中查看“表”属性中的“编辑表”时,可以看到索引的“操作状态”为FAILED。有谁知道这意味着什么?也许是数据库权利?

当我使用时它也能正常工作

dbms_lob.instr(gob_a_document,utl_raw.cast_to_raw('java')) > 0

代替 contains

感谢您的任何建议

PS与我之前的问题有关:Oracle
DBMS_LOB.INSTR和CONTAINS性能

更新

重新创建索引并进行一些操作后,我发现我可以执行上面的查询,但是它不会返回任何内容。

如果尝试使用CONTAINS(gob_a_document,'%'),结果将是26行,并且不知道查询是通过哪个键选择它们的(至少我没有发现明显的地方,我将对其进行更多调查)。问题可能在于我们正在使用Oracle
10g并存储版本11支持的DOCX文件。

if语句仅适用于某些值

if语句仅适用于某些值

我在c中编程物理(蒙特卡罗旋转磁场)模拟并遇到了一种奇怪的问题.
if语句仅适用于一个变量的特定值.我试图做的是我有一个具有一定初始值的变量(bh,外部磁场).我继续减少它直到它在10步内达到-bh,然后它应该开始增加,直到它再次击中bh,依此类推,直到迭代结束.
这适用于bh = .3,但是如果我将它设置为.1,.2或1则不起作用.它开始减少,但直到模拟结束才停止.我的程序中没有其他值等于.3!

我不知道要包括什么,因为主程序有点长.但代码片段是(没有主循环,但包括调试回声):

float bh;  float bmax;
 bh=.3; bmax=bh;

if (bup==1) {
     printf("BUP=1,BFeld = %.2f\n",bh);
     bh = bh + bmax/10;
     if (bh == bmax) { bup=0; }
}
if (bup==0) {
    printf("BUP=0,BFeld = %.2f,%.2f = bmin\n",bh,-bmax);
    bh = bh - bmax/10;
    if (bh == -bmax) { bup=1; }
}

我在调试输出方面得到的是bh = .3

[...]
BUP=0,BFeld = -0.24,-0.30 = bmin
BUP=0,BFeld = -0.27,-0.30 = bmin
BUP=1,BFeld = -0.30
BUP=1,BFeld = -0.27
BUP=1,BFeld = -0.24
[...]

但是当我把bh设置为1时,我得到了

[...]
BUP=0,BFeld = -0.80,-1.00 = bmin
BUP=0,BFeld = -0.90,BFeld = -1.00,BFeld = -1.10,BFeld = -1.20,BFeld = -1.30,-1.00 = bmin
[...]

所以我的调试输出甚至给了我“…… – 1.00,-1.00 ……”的行,但不知何故c认为它们不等于“足够”将bup设置为1.我做错了什么?

解决方法

if (bh == bmax) { bup=1; }

使用==来比较浮点数通常不会因为舍入而导致您的预期结果.

将EPSILON定义为一些合理的小值并比较浮点数,如下所示:

if (fabs(bh - bmax) < EPSILON)

关于更新查询if语句是否适用于Oracle查询并更新语句oracle的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于asp.net-mvc-3 – Razor查看if语句是否正确、c – if语句是否保证不被评估超过必要的?、CONTAINS不适用于Oracle Text、if语句仅适用于某些值的相关知识,请在本站寻找。

本文标签: