比如在数据库中更新一条数据,当fabusj为空时进行赋值,不为空时保留原来的数据。这样的sql语句该如何写?
我是要把这条语句用在jsp页面中
如:update office set fbflag='已发布',blzt='1',(fabusj=?(这个字段为空时才进行赋值)) where workflowinstance_guid=?"

解决方案 »

  1.   

    nvl(要赋的值,原来的值)??
      

  2.   

    update office set fbflag='已发布',blzt='1',fabusj=nvl(fabusj,sysdate) where workflowinstance_guid=?
      

  3.   

    fabusj=nvl(fabusj,value)
    用nvl,如果fabusj为null,就修改为value
    如果fabusj不为null,就修改为fabusj
      

  4.   

    nvl函数我试过了,不能满足我说的条件啊当字段fabusj=‘’时,我才会对该字段赋值,不为空的时候,该字段保留原来的值。我在网上搜到,可以用if-else语句
    但这数据库编程,我才刚用,不知道要怎么写,请大虾们想想辙
      

  5.   

    nvl应该可以实现你的要求啊
    要么是有空格   要么是你没表达清楚
    nvl(trim(要赋的值),原来的值)  试下
      

  6.   

    好的,我再试试。
    我写的语句是这样的,不会是语句有问题吧
    update office set fbflag='已发布',blzt='1',fabusj=nvl(?,(select fabusj from office where workflowinstance_guid=?)) where workflowinstance_guid=?
      

  7.   

    update office set fbflag='已发布',blzt='1',fabusj=nvl(fabusj,'为空赋值')) where workflowinstance_guid=?
      

  8.   

    update office set fbflag='已发布',blzt='1',fabusj=nvl(?,(select fabusj from office where workflowinstance_guid=?)) where workflowinstance_guid=?楼主你这个不行  你的 ?是个占位符吧
    被你搞晕啦
      

  9.   


    是个占位符!其实在更新之前,也可以设置一个变量进行是否为空的判断,但我记得sql语句中可以用判断的。只是不知道怎么写了
      

  10.   

    谢谢各位的帮助,最后我还是用设置一个变量的方式进行的判断。首先从表中查出fabusj的值,如果为空则对其赋值(使用了占位符),不为空则不对其赋值。