有数据表A
------------------------------------
字段       a           b
数据   2w342(dad)    3434
       三大殿(4rf)    898
       大哥的(大点)   34242
       dada             78787
       dahfi            dhj
       da33(dada)       fhsfk
       ......           ......
       ......           ......
-------------------------------------求SQL语句,将a字段的数据的括号及括号里的东西删除掉。及变成:----------------------------------
字段       a           b
数据   2w342           3434
       三大殿          898
       大哥的          34242
       dada             78787
       dahfi            dhj
       da33            fhsfk
       ......           ......
       ......           ......
----------------------------------

解决方案 »

  1.   

       da33      fhsfk这一条为什么保留了 33 ? 如果有括号就不删除数字了,是这样吗?
      

  2.   

    mysql> select a,b,
        ->  replace(replace(replace(replace(replace(replace(replace(replace(replace(
    replace(replace(replace(replace(replace(a,'(',''),')',''),'(',''),')',''),'0',
    ''),'9',''),'8',''),'7',''),'6',''),'5',''),'4',''),'3',''),'2',''),'1','') as k    -> from t_drupalcn;
    +----------------+-------+------------+
    | a              | b     | k          |
    +----------------+-------+------------+
    | 2w342(dad)   | 3434  | wdad       |
    | 三大殿(4rf)  | 898   | 三大殿rf   |
    | 大哥的(大点) | 34242 | 大哥的大点 |
    | dada           | 78787 | dada       |
    | dahfi          | dhj   | dahfi      |
    | da33(dada)     | fhsfk | dadada     |
    +----------------+-------+------------+
    6 rows in set (0.01 sec)mysql>
      

  3.   

    数据表A操作前
    ------------------------------------
    字段      a          b
    数据  2w342(dad)    3434
          三大殿(4rf)    898
          大哥的(大点)  34242
          dada            78787
          dahfi            dhj
          da33(dada)      fhsfk
          ......          ......
          ......          ......
    -------------------------------------操作后变成:----------------------------------
    字段      a          b
    数据  2w342          3434
          三大殿          898
          大哥的          34242
          dada            78787
          dahfi            dhj
          da33            fhsfk
          ......          ......
          ......          ......
    ----------------------------------
      

  4.   

    哦,这样倒是容易了。mysql> select
        ->  SUBSTRING_INDEX(replace(a,'(','('),'(',1) as a1 , b
        -> from t_drupalcn;
    +--------+-------+
    | a1     | b     |
    +--------+-------+
    | 2w342  | 3434  |
    | 三大殿 | 898   |
    | 大哥的 | 34242 |
    | dada   | 78787 |
    | dahfi  | dhj   |
    | da33   | fhsfk |
    +--------+-------+
    6 rows in set (0.00 sec)mysql>
      

  5.   

    你的字符集不一致!你的表中真的是有两种括号() ()  中文和英文的?贴出你的 show create table 语句和 show variables like 'char%'
    ;
      

  6.   

    恩  好像是因为中文括号 ( 引起的问题。该如何解决啊??
    另外这个mysql> select
        ->  SUBSTRING_INDEX(replace(a,'(','('),'(',1) as a1 , b
        -> from t_drupalcn;
    只是select 出来了,但是好像数据表中的值仍然没更新啊 
      

  7.   

    建议你能直接回答问题,否则很难分析
    更新的话要用update t_drupalcn
    set a= SUBSTRING_INDEX(replace(a,'(','('),'(',1) ;
      

  8.   

    贴出你的 show create table 语句和 show variables like 'char%'
      

  9.   

    贴出你的 show create table 语句和 show variables like 'char%'#8楼 /  #12楼
    这是第三遍问你相同的问题了。还需要再问几次?
      

  10.   

    我在弄啊 谢谢show variables like 'char%'
    show create table 报错表例如:
    update t.c set aa = SUBSTRING_INDEX(aa,'(',1) ;
    现在的问题就是,如果那个括号是中文括号,就会出错,英文就不会出错
      

  11.   

    CSDN不能直接贴图片啊  我先要上传到一个空间 然后再引用地址 
      

  12.   

    不需要贴图,你直接象下面一下贴文本就行了。mysql> show variables like 'char%';
    +--------------------------+-----------------------------
    | Variable_name            | Value
    +--------------------------+-----------------------------
    | character_set_client     | latin1
    | character_set_connection | latin1
    | character_set_database   | latin1
    | character_set_filesystem | binary
    | character_set_results    | latin1
    | character_set_server     | latin1
    | character_set_system     | utf8
    | character_sets_dir       | C:\Program Files\MySQL\MySQL
    +--------------------------+-----------------------------
    8 rows in set (0.00 sec)mysql> show create table t_drupalcn;
    +------------+-------------------------------------------
    | Table      | Create Table
    +------------+-------------------------------------------
    | t_drupalcn | CREATE TABLE `t_drupalcn` (
      `a` varchar(20) DEFAULT NULL,
      `b` varchar(20) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
    +------------+-------------------------------------------
    1 row in set (0.00 sec)mysql>
      

  13.   

    唉,算了,你先试
    set names 'utf8';
    update ....不行的话,再试
    set names 'gbk';
    update ...再不行再换
    set names 'latin1';
    update ...
    当您的问题得到解答后请及时结贴.
    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html