有这样的一个需求:       select 'insert into xh_data values('''+cast(pk_data as varchar)+''','''+pk_psndoc+''','''+year+''','''+period+''','''+isnull(data_01, 'null')+''','''+isnull(data_02, 'null')+''','''+isnull(data_03, 'null')+''','''+isnull(data_04, 'null')+''','''+isnull(data_05, 'null')+''','''+isnull(data_06, 'null')+''','''+isnull(data_07,'null')+''','''+isnull(data_08,'null')+''','''+isnull(data_09,'null')+''','''+isnull(data_10,'null')+''','''+isnull(data_11,'null')+''','''+isnull(data_12,'null')+''','''+isnull(data_13,'null')+''','''+isnull(data_14, 'null')+''','''+isnull(data_15, 'null')+''','''+isnull(data_16, 'null')+''','''+isnull(data_17, 'null')+''','''+isnull(data_18, 'null')+''','''+isnull(data_19, 'null')+''','''+isnull(data_20,'null')+''','''+isnull(data_21,'null')+''','''+isnull(data_22,'null')+''','''+isnull(data_23,'null')+''','''+isnull(data_24,'null')+''','''+isnull(data_25,'null')+''','''+isnull(data_26,'null')+''','''+isnull(data_27,'null')+''','''+isnull(data_28,'null')+''','''+isnull(data_29, 'null')+''','''+isnull(data_30, 'null')+''','''+isnull(data_31, 'null')+''','''+isnull(cast(piece_1 as varchar), 'null')+''','''+isnull(cast(piece_2 as varchar), 'null')+''','''+isnull(cast(piece_3 as varchar), 'null')+''','''+isnull(cast(piece_4 as varchar),'null')+''','''+isnull(cast(piece_total as varchar),'null')+''','''+ts+''','''+cast(dr as varchar)+''')' from xh_data where year = '2004' and period = '11' 
    
      这样的实现的sql语句已写好,但是有点细节问题,达不到需要的结果。请各位请看 isnull(data_**,'null')  这个拼合语句,我数据库中有的data_01 --到data_31还有几个别的字段,这些个字段下有的是有数据的有的是没有数据为null的,我想把有数据的调出唻,结果显示为比如:'DW13' 把没有数据的结果显示为:null 不加单引号,数据之间是,好隔开。 
        我的这个语句是把所有的字段都加了''单引号,所以我在把历史数据还原到oracle数据库中时,null 字段的单引号就会报错,把null的单引号去掉没没事了。请求各位的帮忙,该怎样改!急需,谢谢!

解决方案 »

  1.   


    isnull(data_**,'null') 把這個改為 isnull(data_**,null)
    在Oracle中是 nvl(data_**,null),你這樣處理是什麽作用呀, 如果是null 還返回null?
    nvl(data_**,'') 如果為空返回空白,
    nvl(data_**,0)  如果為空返回0,
      

  2.   

    oracle数据库中用nvl(data_**,null)
      

  3.   


      你好,举个例子
        insert...isnull('DW12','null');这个是sql 2000导出来的语句 ;
        insert...isnull('DW12',null); oracle 要这样才能执行;
      怎样在SQL2000 里在查询出oracle要执行用的脚本?
        
      

  4.   

    [Quote=引用 3 楼 Josir 的回复:]
    引用 1 楼 ks_reny 的回复:
    SQL code 
    isnull(data_**,'null') 把這個改為 isnull(data_**,null) 
    在Oracle中是 nvl(data_**,null),你這樣處理是什麽作用呀, 如果是null 還返回null? 
    nvl(data_**,'') 如果為空返回空白, 
    nvl(data_**,0)  如果為空返回0, 
       你好,举个例子 
        insert...isnull('DW12','null');这个是sql 2000导出来的语句 ; 
        insert...isnull('DW12',null); oracle 要这样才能执行; 
      怎…
    [/Quot 你好,举个例子 
        insert...('DW12','null');这个是sql 2000导出来的语句 ; 
        insert...('DW12',null); oracle 要这样才能执行; 
      在SQL2000里怎样导出 oracle可执行用的脚本。
    e]
      

  5.   

     你好,我是用上面的select语句先把insert语句调出来,然后在oracle数据库中执行。
      

  6.   

    如果单纯把sql 中的数据要导入到oracle貌似不用这么吧。可以采用其他的方法啊