看到网友问,怎么查询表中某个字段数据是不是包含了全角字符啊? 这个问题涉及到几个函数:to_single_byte、length和lengthb,我之前做开发的时候研究的是如何判断一个字符串中是否包含中文,其实和这个本质是一样的,且看实验部分。

1  实验部分

1.1  lengthb和length函数结合to_single_byte函数

---查找出含有汉字,严格的说是含有全角字符的行

SELECT l.name,

length(l.name),

lengthb(l.name)

FROM   xb_link l

WHERE  length(l.name) != lengthb(l.name)

AND    length(l.name) < 20;

以下数据也满足条件:

SELECT l.id,

l.name

FROM   xb_link l

WHERE  length(l.name) != lengthb(l.name)

AND    l.metacategory IN

('com.gxlu.ngrm.network.DDNCircuit',

'com.gxlu.ngrm.network.FRCircuit',

'com.gxlu.ngrm.network.ATMCircuit',

'com.gxlu.ngrm.network.DDNOCircuit',

'com.gxlu.ngrm.network.FROCircuit')

AND    l.id IN ('301898331', '301898335', '301908187', '301929403');

所以可以借助to_single_byte函数来解决。

SELECT l.id,

l.name,

to_single_byte(l.name),

length(l.name) l1,

lengthb(l.name) l2,

length(to_single_byte(l.name)) l

FROM   xb_link l

WHERE  length(l.name) != lengthb(l.name)

AND    l.metacategory IN

('com.gxlu.ngrm.network.DDNCircuit',

'com.gxlu.ngrm.network.FRCircuit',

'com.gxlu.ngrm.network.ATMCircuit',

'com.gxlu.ngrm.network.DDNOCircuit',

'com.gxlu.ngrm.network.FROCircuit')

AND    l.id IN ('301898331', '301898335', '301908187', '301929403');

1.2  regexp_replace --替换其它字符为空

SELECT

l.id,

l.name

FROM   xb_link l

WHERE  regexp_replace(TRIM(l.name),

'([A-Za-z0-9]|[[:punct:]]|[[:space:]])',

'') IS NOT NULL;

1.3  to_multi_byte 函数--全是全角字符

---全是汉字

SELECT l.name,

to_multi_byte(l.name)

FROM   xb_link l

WHERE  l.name = to_multi_byte(l.name);

SELECT l.name,

to_multi_byte(l.name)

FROM   xb_link l;

1.4  网友问题解答:某个字段数据是不是包含了全角字符?

我们做如下的实验:

drop table aa;

create table aa (col   varchar2(255));

SELECT * FROM aa for update;

SELECT a.col,

to_single_byte(a.col),

length(a.col),

lengthb(a.col),

length(to_single_byte(a.col)),

lengthb(to_single_byte(a.col))

FROM   aa a

WHERE  (lengthb(a.col) - length(a.col)) <>

(lengthb(to_single_byte(a.col)) - length(to_single_byte(a.col)));

 zhuan :http://blog.itpub.net/26736162/viewspace-1688209/

Oracle中如何判断一个字符串是否含有汉字的更多相关文章

  1. js中如何判断一个字符串包含另外一个字符串?

    js中判断一个字符串包含另外一个字符串的方式比较多? 比如indexOf()方法,注意O是大写. var test="this is a test"; if(test.indexO ...

  2. [转]Java中怎样判断一个字符串能否转成数字

    原文地址:http://blog.sina.com.cn/s/blog_7bac470701014mjf.html 判断字符串是否为数字 //1.正则表达式  public static boolea ...

  3. java中如何判断一个字符串是否包含另外一个字符串的方法

    indexOf(String s)的使用,如果包含,返回的值是包含该子字符串在父类字符串中起始位置: 如果不包含必定全部返回值为-1 package my_automation; public cla ...

  4. Java中怎样判断一个字符串是否是数字?

    1:正则表达式 public static void main(String[] args) { String str = "123456456456456456"; boolea ...

  5. Java中如何判断一个字符串是否为数字

    方法一:异常处理 public static boolean isInteger(String str){ try { Integer i = Integer.parseInt(str); retur ...

  6. java中怎么判断一个字符串中包含某个字符或字符串

    public static void main(String[] args) { String str="ABC_001"; ){ System.out.println(" ...

  7. java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”

    在javascript中有一个方法isDigit()使用来判断一个字符串是否都是数字,在java的字符串处理方法中没有这样的方法,觉得常常需要用到,于是上网搜了一下,整理出了两个用正则表达式匹配的判断 ...

  8. java 判断一个字符串中的数字:是否为数字、是否包含数字、截取数字

    题外话: JavaScript中判断一个字符是否为数字,用函数:isDigit(); 一.判断一个字符串是否都为数字 package com.cmc.util; import java.util.re ...

  9. c c++怎么判断一个字符串中是否含有汉字

    c c++怎么判断一个字符串中是否含有汉字 (2013-02-05 10:44:23) 转载▼     #include  #include  int main() { char sztext[] = ...

随机推荐

  1. Eclipse插件开发

    最近在做Eclipse的插件开发,目前是在Eclipse3.x环境上进行开发,之后迁移到Eclipse4.x环境.会贡献在插件开发过程中遇到的所有问题以及相关技巧,敬请期待. SWT开发 JFace开 ...

  2. httpsClient实例

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.F ...

  3. httpsClient

    Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且 ...

  4. json 基础

    json格式 JSON格式:http://www.json.org/ python和JSON的关系请参考:http://docs.python.org/library/json.html JSON建构 ...

  5. Chp10: Scalability and Memory Limits

    The Step-by-Step Approach break down a tricky problem and to solve problems using what you do know. ...

  6. 用cxSelect插件补充一下回显过滤项功能

    这个在DJANGO里,最好在过滤之后,让用户知道自己过滤的选择.所以要定位默认值. 1,在HTML文件里显示默认值: <form class="uk-form" name=& ...

  7. HtmlAgilityPack 总结(一)

    一个解析html的C#类库HtmlAgilityPack, HtmlAgilityPack是一个基于.Net的.第三方免费开源的微型类库,主要用于在服务器端解析html文档(在B/S结构的程序中客户端 ...

  8. Makefile笔记

    一个简单的Makefile描述规则组成: TARGET...:PREREQUISITES... COMMANDS... ... target:规则的目标.通常是程序中间或者最后要生成的文件名,也可以是 ...

  9. XE2编译出来的DLL的DLLMain的退出地方用到了halt0

    DelphiXE2内存加模块升级版.支持32位和64位模块. 已转至新的博客 http://www.raysoftware.cn/?p=51 很多年以前写过内存加载DLL的一片技术. http://b ...

  10. Qt出现警告 Unescaped backslashes are deprecated!解决办法

    Fixing Qt Warning: Unescaped backslashes are deprecated! From: http://www.openguru.com/2011/10/fixin ...