Oracle 10 用正则表达式查找全角字符

Blaider 2010-02-24 11:48:39
请问各位,在Oracle 10G R2中,怎么使用正规表达式来查看字段中是不是包含中文全角字符啊?例如“,。?《》”之类的
...全文
905 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Blaider 2010-03-01
  • 打赏
  • 举报
回复
无满意答案,结贴了……
Blaider 2010-02-26
  • 打赏
  • 举报
回复
select regexp_instr('safafsdf?sdfasdf','[^a-z|A-Z|0-9]') from dual;
是查询出非子母与非数字字符的位置,现在需要的结果是,只查出全角字符,而不只是非数字与非字母字符。例如如果是“,.?()”都是可以的,但是是“,。?()”是不可以的。
现在想确认的就是字符中是否包含“,。?()”
tiancx82 2010-02-24
  • 打赏
  • 举报
回复
只会用length,lengthb 比较,正则表达式不会,学习中。。。。。。
YY_MM_DD 2010-02-24
  • 打赏
  • 举报
回复

---等于0代表没有,大于0代表包含中文全角字符
SQL> select regexp_instr('safafsdf?sdfasdf','[^a-z|A-Z|0-9]') from dual;

REGEXP_INSTR('SAFAFSDF?SDFASDF
------------------------------
9

SQL> select regexp_instr('safafsdfsdfasdf','[^a-z|A-Z|0-9]') from dual;

REGEXP_INSTR('SAFAFSDFSDFASDF'
------------------------------
0

SQL> select regexp_instr('safa《fsdfsdfasdf','[^a-z|A-Z|0-9]') from dual;

REGEXP_INSTR('SAFA《FSDFSDFASD
------------------------------
5

SQL>
Blaider 2010-02-24
  • 打赏
  • 举报
回复
引用 4 楼 tangren 的回复:
如果是中文字符集,要查询是否包含全角可用
select * from aaa where length(name) <>lengthb(name);

字段中包含中文的,只要全是中文全角的lengthb(name)的值是length(name)的2倍啊。现在是想查询中,这个些中文是不是包含全角的字符,系统中除了汉字外想使用半角的字符
tangren 2010-02-24
  • 打赏
  • 举报
回复
如果是中文字符集,要查询是否包含全角可用
select * from aaa where length(name)<>lengthb(name);
Blaider 2010-02-24
  • 打赏
  • 举报
回复

select * from aaa
where regexp_like(name,'[^\x00-\xff]')

用这个公式会查出所有结果,全角的半角的都出来了,应该怎么修改啊?
vanjayhsu 2010-02-24
  • 打赏
  • 举报
回复
没做过,关注,学习。。。
fatfoxz 2010-02-24
  • 打赏
  • 举报
回复
[^\x00-\xff]表示全角。。。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧