表有两个字段:
一个表有两列: 
1.id 
2.answer 我要把answer的最后一句话去掉。比如此表有如下数据: 
id  answer 
1    如果您向专家提问,专家在登录CSDN网站后将第一时间内得到通知,并且为您提供答案(如果需要向指定的专家提问,您需要至少100分可用分)。 
2    在SQL查询分析器里修改表中数据(语句不会写)。修改 SQL 语句。 
修改以后的数据为: 
id  answer 
1    如果您向专家提问,专家在登录CSDN网站后将第一时间内得到通知,并且为您提供答案。 
2    在SQL查询分析器里修改表中数据。修改 SQL 语句。

解决方案 »

  1.   

    .....你的需求太广泛了,下面是只有一个括号的情况,多括号还得处理
    update table set answer=substr(answer,1,instr(answer,'(')-1)||substr(answer,instr(answer,')')+1);
      

  2.   

    同意楼上的,通过instr函数和substr函数对字段进行操作
      

  3.   

    请问一下,instr(answer,'(')-1)||substr(answer,instr(answer,')')+1是什么意思?
      

  4.   

    instr(answer,'(')-1)                   这个是第一个(出现的位置-1
    substr(answer,instr(answer,')')+1)     这个是第一个)出现的位置+1
    如果有多个括号,看你想怎么删除,基本就按这种方法去做,有可能会用到存储过程
      

  5.   


    LZ你拆分的并不正确,应该是这样
    substr(answer,1,instr(answer,'(')-1)||substr(answer,instr(answer,')')+1);substr(answer,1,instr(answer,'(')-1)和substr(answer,instr(answer,')')+1),将(前面的部分取出与)后面的字符串进行合并。如果知道instr函数和substr函数的含义,你会明白的。  CREATE TABLE "AIOBS7"."ORACLE_TEMP1" 
       ( "ID" VARCHAR2(400), 
    "ANSWER" VARCHAR2(400)
       ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "OBS_DATA" ;如果你想确定一个记录含有括号的个数,可以通过下面的语句:
    select length(ANSWER)-length(replace(ANSWER,'(','')) from oracle_temp1;
    来实现,如果存在一条记录多个括号的情况,最好使用指针和循环语句来实现
      
      

  6.   

    我想到一个方法 不晓得怎么样 前辈们帮我看看
    update table set answer = replace(answer,'(%)','');
    这个方法和上面的几个比怎么样,如果只有一对小括号,这个方法可以吗?如果是括号里嵌套了括号的话,这个方法可行吗?
    谢谢!
      

  7.   

    我想到一个方法 不晓得怎么样 前辈们帮我看看
    update table set answer = replace(answer,'(%)','');
    这个方法和上面的几个比怎么样,如果只有一对小括号,这个方法可以吗?
    up up up
      

  8.   

    没有为什么,不行就是不行。 %只有和Like在一起才有可能成为通配符
      

  9.   

    SELECT REGEXP_REPLACE(T.answer, '(\(.*\))', '') FROM TAC T;
    在oracle9i或10G中可以使用正则
      

  10.   

    你想替换全角的话再加个
    SELECT REGEXP_REPLACE(T.answer, '(\(.*\))|((.*\))', '') FROM TAC T;
      

  11.   

    SELECT REGEXP_REPLACE(T.NAME, '(\(.*\))|((.*))', '') FROM TAC T;