事例如下:
这是为什么呢?

解决方案 »

  1.   

    这个怎么解决,我用 
    update PROVINCE_WINNING_PRIZE set area=trim(area) 无法删除多余的空间,或者说不是空格
      

  2.   

    LENGTH(AREA)改成LENGTH(TRIM(AREA))试试
      

  3.   

    你都Distinct了,还有两个看起来相同的值,那应该是另外一个值有空格什么的。
    Select area, '''' || area || '''' from ....
    用这个看一下是不是有什么咱们肉眼看不到的东西。
      

  4.   

    可问题的关键是我用了update   PROVINCE_WINNING_PRIZE   set   area=trim(area)   
    却无法删除空格吗???
    我想不是空格..
      

  5.   

    你的表结构是什么样子的呢?
    你都作了什么操作呢?
    选出的时候,用了什么SQL呢?
      

  6.   

    赫赫,看看LZ贴出来的图就明白了。select distinct area from 所有的数据都出现了两次,所以说,就是有两位的数据,和10位的数据。想知道是什么,可以dump出来看看,就知道里面有什么东西了。不是空格,可能是一些看不到的符号。终止符等等。要看LZ的表的结构,和现在的数据的DUMP就很容易明白了。
      

  7.   

    可能不是空格吧,比如从网页上取得TEXTAREA内容INSERT到数据库里面,
    数据库会保存TEXTAREA里面回车之类的东西的,
    而你用select出来眼睛是看不到的。
      

  8.   

    用dump()执行执行的结果如下图所示
    我怎么样才能把它变回真正我想来的数呢
      

  9.   

    用SELECT DUMP(AREA, 17) FROM (...)
    看看是些什么字符
      

  10.   

    Typ=1 Len=10: 0,1,^@,^@,^@,^@,^@,^@,^@,^@
      

  11.   


    执行   select dump(area,17) from ( select distinct area from PROVINCE_WINNING_PRIZE  )   返回的结果是
    Typ=1   Len=10:   0,1,^@,^@,^@,^@,^@,^@,^@,^@
      

  12.   

    用REPLACE(AREA, '^@', '')试试
      

  13.   

    不行的话先执行DUMP(AREA, 10)看看, 再用REPLACE(AREA, ASCII(),'')来执行
      

  14.   

    不行的话先执行DUMP(AREA,   10)看看,
    结果是
    Typ=1 Len=10: 48,49,0,0,0,0,0,0,0,0
    那replace()该怎么写??俺这样写
     update PROVINCE_WINNING_PRIZE set area=REPLACE(AREA, ASCII(0),'') where  length(area)=10
     update PROVINCE_WINNING_PRIZE set area=trim(area)
    可还是不行
      

  15.   

    执行了
     update PROVINCE_WINNING_PRIZE set area=REPLACE(area,'^@','') where  length(area)=10也一样不行
      

  16.   

    你先DUMP(AREA, 16)看看, 我想知道到底是什么字符
      

  17.   

    Typ=1 Len=2: 30,31
    Typ=1 Len=10: 30,31,0,0,0,0,0,0,0,0
      

  18.   

    你AREA的字段类型是varchar2的吧? 不然怎么老是为0?没办法用对竺UNICODE字符的方法取代
    你只能找找规律, 再用 类似于 where AREA LIKE '01%' 的方法来清洗数据了
      

  19.   

    最后的办法了:(, 用
    UPDATE ... SET AREA = REPLACE(AREA, CHR(0 USING NCHAR_CS), '')
    试试看
      

  20.   

    楼主不是想取AREA的前两位吗?直接substr(area,1,2)