小编Ada*_*uso的帖子

SQL - IF EXISTS UPDATE ELSE INSERT语法错误

我有以下SQL查询:

IF EXISTS(SELECT * FROM component_psar WHERE tbl_id = '2' AND row_nr = '1') 
   UPDATE component_psar
      SET col_1 = '1', col_2 = '1', col_3 = '1', col_4 = '1', col_5 = '1',
                 col_6 = '1', unit = '1', add_info = '1', fsar_lock = '1' 
    WHERE tbl_id = '2' AND row_nr = '1' 
ELSE 
    INSERT INTO component_psar (tbl_id, row_nr, col_1, col_2, col_3, col_4,
                                col_5, col_6, unit, add_info, fsar_lock)
    VALUES ('2', '1', '1', '1', '1', '1', '1', '1', '1', '1', 'N')
Run Code Online (Sandbox Code Playgroud)

忽略我试图将每列设置为'1'的事实.这只是示例数据.:) …

mysql sql

25
推荐指数
3
解决办法
10万
查看次数

将ArrayList <subclass>转换为ArrayList <superclass>

我有三个类:Blob,Food和Predator,所有这些都是抽象类Organism的子类.

我还为每个类都有一个ArrayList:blob,食物和捕食者

我正在编写一个函数,它将为生物体选择一个"目标",具体取决于它的类型.有机体作为参数传递,然后选择适当的目标 - 如果Blob通过然后它应该以食物为目标,如果通过Predator然后它应该以Blob为目标,并且如果食物通过那么它应该以捕食者.现在我有:

ArrayList<Food> foods = new ArrayList<Food>();
ArrayList<Blob> blobs = new ArrayList<Blob>();
ArrayList<Predator> predators = new ArrayList<Predator>();

public Organism pickTarget(Organism o){
    ArrayList<Organism> search = new ArrayList<Organism>();
    if(o.getClass() == Blob.class){
        search = foods;
    }
    else if(o.getClass() == Predator.class){
        search = blobs;
    }
    else if(o.getClass() == Food.class){
        search = predators;
    }

    Organism target = search.get(0);
    for(Organism organism:search){
        //do stuff to pick a target from assigned search space
    }

    return target;
}
Run Code Online (Sandbox Code Playgroud)

因此,这里的想法是初始化一个通用的Organisms ArrayList,然后根据参数的类型为其分配一个现有的ArrayLists.然后将搜索该ArrayList以寻找返回的最合适的目标.

但是当我尝试将现有的ArrayList分配给搜索变量时,我遇到了类型不匹配错误.例如,'无法转换ArrayList<Food>ArrayList<Organism>'.

有人知道像这样的问题的解决方案吗?从子类转换为超类通常不是问题所以我希望有一个ArrayLists的解决方案.

java

2
推荐指数
1
解决办法
484
查看次数

将前同级节点中的变量与当前节点进行比较

我有以下模板:

<xsl:template match="footnote">
    <xsl:variable name = "string">
        <xsl:value-of select="."/>
    </xsl:variable>
    <xsl:variable name = "bool">
        <xsl:if test="$string = preceding-sibling::node()/$string">
            <xsl:text>false</xsl:test>
        </xsl:if>
    </xsl:variable>
    <xsl:if test="$bool != 'false'">
        <!-- DO STUFF -->
    </xsl:if>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

我正在尝试检查当前节点的 $string 变量,并将其与所有以前的脚注节点进行比较,以查看它们是否具有相同的 $string 变量。如果它与任何前面的兄弟姐妹不匹配,那么它应该做一些事情,否则它什么都不做。

使用我拥有的代码,即使尚未创建脚注节点,测试“$string =previous-sibling::node()/$string”也始终评估为真。

谁能帮我吗?我很难创建表达式来与所有以前的兄弟姐妹中的变量进行比较。

编辑:示例 XML:

<xml>
<footnote>Footnote 1</footnote>
<footnote>Footnote 2</footnote>
<footnote>Footnote 1</footnote>
<footnote>Footnote 1</footnote>
<footnore>Footnote 3</footenote>
</xml>
Run Code Online (Sandbox Code Playgroud)

我正在尝试将其转换为:

<xml>
<footnote>Footnote 1</footnote>
<footnote>Footnote 2</footnote>
<footnote>Footnore 3</footnore>
</xml
Run Code Online (Sandbox Code Playgroud)

xslt

1
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×1

mysql ×1

sql ×1

xslt ×1