Oracle11g sql可以更新语句判断一些列是""

时间:2017-08-10 09:58:15

标签: java sql

我有两个值 $shrtIPv6 = "2001:100:e20::1"; $pieces = explode(":", $shrtIPv6); foreach($pieces as $piece) { $zerosuff = str_pad($piece, 4, '0', STR_PAD_LEFT); $array1[] .= $zerosuff; } if(count($pieces)<8){ $myarray = array("0000","0000","0000","0000","0000","0000","0000"); $last = array_slice($array1, -1); $array1 = array_slice($array1,0,-1); $both = array_replace($myarray,$array1); $fin = array_merge($both,$last); echo implode(":",$fin); } picId,我想更新表A.但首先,我必须检查它们是否为空,即tubId。我使用两次更新语句。我想知道是否只能使用一次更新语句来完成此任务。

""

非常感谢!

3 个答案:

答案 0 :(得分:0)

亲爱的Jon Snow试图像这样使用in

  String update = "update A set columnName=someValue where id in (" + tubId +","+picId+")";

答案 1 :(得分:0)

在这里你可以使用另一个变量并给它提供条件。

String picId="";
String tubId="1";
String sample="";
if(!(picID.equals("")))
{
sample=picId;
}
else if(!(tubId.equals(""))) 
{
sample=tubId;
}
 String update = "update A set columnName=someValue where id=" + sample;

         this.executeUpdate(update, new Object[]{});

答案 2 :(得分:0)

我希望您知道在SQL查询中使用串联的方法是SQL注入的方法。

但是关于你的问题,你可以在WH条款中使用IN条件。只需准备数据:

List<String> listId = new ArrayList<>();
if (!"".equals(picId)) {
    listId.add(picId);
}
if(!"".equals(tubId)) {
     listId.add(tubId);
}
String ids = listId.stream().map(_s -> String.format("'%s'", _s)).collect(Collectors.joining(",", "(", ")"));
String update = "update A set columnName=someValue where id IN " + ids;
this.executeUpdate(update, new Object[]{});