分类：电脑/网络-程序设计-数据库
问题：oracle问题假设表是这样的表名a字段名1，字段2，字段31a 
假设表是这样的
表名 a
字段名1，字段2，字段3
1        a      b
a        1      b
1        2      2
3        7      2
.        .      .
.        .      .
.        .      .
.        .      .
.        .      .
.        .      .


现在三个字段的数据类型都是字符型的
我现在想把看上去都是数字的记录删除
就是说1  2  2
      假设表是这样的
表名 a
字段名1，字段2，字段3
1        a      b
a        1      b
1        2      2
3        7      2
.        .      .
.        .      .
.        .      .
.        .      .
.        .      .
.        .      .


现在三个字段的数据类型都是字符型的
我现在想把看上去都是数字的记录删除
就是说1  2  2
      3    7   2
      .    .   .
      .    .   .
要删除

回答：如果三个字段的值除了数字和字母没有其他的符号,那么最简单的方法是直接用字母字的比较, 因为数字比字母小.严谨是方法是将三个字段转化正ascii码进行比较0-9 的ascii的码是从48-57delete from a where ascii(字段1)>47 and ascii(字段1)<58  and ascii(字段2)>47 and ascii(字段2)<58  and ascii(字段3)>47 and ascii(字段3)<58  补充:楼主说的对,如果是两位以上的值上面的方法就不行.那么可以用字符合并的方法,虽然有些烦琐delete from a where not (upper(字段1||字段2||字段3) like '%A%' or  (upper(字段1||字段2||字段3) like '%B%' ...... or (upper(字段1||字段2||字段3) like '%Z%')还可以编个循环小程序,方法就很多了比如可以加个ID字段, 做唯一关键字段然后做个cursor cur_a is select id, 字段1||字段2||字段3 field from a;temp_a cur_a%rowtype;for temp_a in cur_a loop  for i in 0..length( temp_a.field) loop      if substr(temp_a.field,i,1) >47 and substr(temp_a.field,i,1) <58 then      delete from a where id  = temp_a.id;      exit;  end loopend loop;上述语法可能不完整,只是叙述了个方法,谨供参考.