我想在一个字段中检测字段中有没有"1","2","3"..."9"或者"一","二"..."九"等字符,除了用Like还能有别的方式吗?
解决方案 »
- 子查询可否用表连接代替?
- 请教DBMS_METADATA.GET_DDL报错 error stack
- oracle 删除dmp文件
- linux上连接oracle错误
- 设置oracle 客户端连接超时时间,有这么难?
- 这个SQL select 为什么会半天查不出来?
- 关于database link 连接的问题
- 各位大侠:请教orcal8i怎样装在winxp prefossional下,
- oracle 如何实现sql server 同样的功能???
- 控制文件多路复用卡壳
- 数据库时间字段 里存的是 类似 1145004803421一窜数字 怎么转成2006年04月14日 16:53
- oracle多表求和
select * from tb where instr(name,'1')>0
参考:
--文件解析时,校验姓名中是否存在非法字符
FUNCTION F_CHECK_REAL_NAME(REAL_NAME VARCHAR2) RETURN NUMBER IS
BEGIN
IF INSTR(REAL_NAME, '。') > 0 THEN
RETURN INSTR(REAL_NAME, '。');
END IF;
IF INSTR(REAL_NAME, ',') > 0 THEN
RETURN INSTR(REAL_NAME, ',');
END IF;
IF INSTR(REAL_NAME, '(') > 0 THEN
RETURN INSTR(REAL_NAME, '(');
END IF;
IF INSTR(REAL_NAME, ')') > 0 THEN
RETURN INSTR(REAL_NAME, ')');
END IF;
IF INSTR(REAL_NAME, '-') > 0 THEN
RETURN INSTR(REAL_NAME, '-');
END IF;
IF INSTR(REAL_NAME, ';') > 0 THEN
RETURN INSTR(REAL_NAME, ';');
END IF;
IF INSTR(REAL_NAME, '‘') > 0 THEN
RETURN INSTR(REAL_NAME, '‘');
END IF;
IF INSTR(REAL_NAME, '“') > 0 THEN
RETURN INSTR(REAL_NAME, '“');
END IF;
IF INSTR(REAL_NAME, '’') > 0 THEN
RETURN INSTR(REAL_NAME, '’');
END IF;
IF INSTR(REAL_NAME, '”') > 0 THEN
RETURN INSTR(REAL_NAME, '”');
END IF;
IF INSTR(REAL_NAME, ',') > 0 THEN
RETURN INSTR(REAL_NAME, ',');
END IF;
IF INSTR(REAL_NAME, ';') > 0 THEN
RETURN INSTR(REAL_NAME, ';');
END IF;
IF INSTR(REAL_NAME, ':') > 0 THEN
RETURN INSTR(REAL_NAME, ':');
END IF;
IF INSTR(REAL_NAME, ':') > 0 THEN
RETURN INSTR(REAL_NAME, ':');
END IF;
RETURN 0;
END F_CHECK_REAL_NAME;
/DECLARE
p_list CONSTANT INTEGER_TT := INTEGER_TT(21, 22, 23, 24);--这个可以程序里面赋值,也不一定要INTEGER,自己改吧
v_sql varchar2(10000);
v_name varchar2(200);
v_id number;
BEGIN
v_sql := 'SELECT object_name, object_id
FROM all_objects
WHERE object_id IN
(SELECT column_value FROM TABLE(:1)) and rownum = 1';
execute immediate v_sql into v_name, v_id using p_list;
DBMS_OUTPUT.PUT_LINE(v_name || ':' || v_id);
END;
/
insert into charcheck values('abc');
insert into charcheck values('x10');
insert into charcheck values('zzz');
insert into charcheck values('一');
insert into charcheck values('大');
insert into charcheck values('a1t');
insert into charcheck values('不');
commit;
select str from charcheck where regexp_like(str,'[[:digit:]]');STR
----------
110
x10
a1t但是要检测汉字的话用存储过程了比较好.
另外,palm_civet兄弟,你的这句
'SELECT object_name, object_id
FROM all_objects
WHERE object_id IN
(SELECT column_value FROM TABLE(:1)) and rownum = 1'
我有点看不懂,能给解释一下吗?
SELECT TRANSLATE(EMPNO, '*123456789一二三四五六七八九十', '*'), EMPNO
FROM SCOTT.EMP S
WHERE LENGTH(TRANSLATE(EMPNO, '*123456789一二三四五六七八九十', '*')) <
LENGTH(EMPNO);
返回:
00 7900
0 7902