--全是数字的: select * from 你的表 where translate(你的列,'0123456789',' ')='';
截位该字段并用ASCII()函数判断是否属于0~9内的ASCII码
如果你是8i:create or replace function contains(p_str in varchar2) return number as w_pos number; begin for i in 1..length(p_str) loop w_pos := instr('0123456789',substr(p_str,i,1)); if w_pos=0 then return 0; end if; end loop; return 1; end; /--所有为数字的: select * from 表 where contains(列)=1;
select * from 你的表 where translate(你的列,'0123456789',' ')=''; 是最好的方法
pengdali(大力 V3.0)函数可以的。
good!! replace(col_name,'0123456789',' ')=' '
sorry,修改以下; trim(ltrim(rtrim(replace(col_name,'0123456789',' ')))) is null
创建一个函数:CREATE OR REPLACE FUNCTION is_number(p_str in varchar2) return varchar2 as v_num number; begin select to_number(v_str) into w_pos from dual; return p_str; exception when others then return '不是数字'; end;然后用SQL调用它:select colname,is_number(colname) from table_name;
将select to_number(v_str) into w_pos from dual;中的w_pos改为v_num,v_str改为p_str,呵呵,抱歉
select * from 你的表 where translate(你的列,'0123456789',' ')='';
return number
as
w_pos number;
begin
for i in 1..length(p_str) loop
w_pos := instr('0123456789',substr(p_str,i,1));
if w_pos=0 then
return 0;
end if;
end loop;
return 1;
end;
/--所有为数字的:
select * from 表 where contains(列)=1;
是最好的方法
replace(col_name,'0123456789',' ')=' '
trim(ltrim(rtrim(replace(col_name,'0123456789',' ')))) is null
return varchar2
as
v_num number;
begin
select to_number(v_str) into w_pos from dual;
return p_str;
exception
when others then return '不是数字';
end;然后用SQL调用它:select colname,is_number(colname) from table_name;