不会呀
SQL> select t.* from table1 t where name like '%那%'; NUM1 NUM2 NUM3 NAME
---------- ---------- ---------- --------------------
1 1 1 a好那么a
SQL> select t.* from table1 t where name like '%那%'; NUM1 NUM2 NUM3 NAME
---------- ---------- ---------- --------------------
1 1 1 a好那么a
汉字模糊匹配BUG
发表人:biti_rainy | 发表时间: 2004年十月25日, 16:00当要求汉字进行模糊匹配的时候,由于oracle是采用存储的字节流进行查找的,所以有存在着一个汉字的后半截和另一个汉字的前半截拼起来正好构成某个汉字。这样则存在着模糊匹配出现错误的可能性。碰巧,今天我在生产数据库应用中遭遇了好几个。我的数据库字符集是US7ASCII ,和字符集是相关的。SQL> select PRODUCTION_SERVICE from company where view_name = '泰兴市佰信纺织有限公司';
PRODUCTION_SERVICE
------------------------------------------------------------------------------------------牛仔布;色织布;弹力牛仔布;竹节牛仔布;彩色牛仔布;提花牛仔布;牛仔服;牛仔裤;纱卡;灯蕊绒;SQL>
SQL> select count(*)
from company
where view_name = '泰兴市佰信纺织有限公司'
and PRODUCTION_SERVICE like '%'||'蟹'||'%';
COUNT(*)
--------- 1
SQL> select PRODUCTION_SERVICE, dump(PRODUCTION_SERVICE),dump( '蟹') from company
where view_name = '泰兴市佰信纺织有限公司'
3 4 ;PRODUCTION_SERVICE
------------------------------------------------------------------------DUMP(PRODUCTION_SERVICE)
------------------------------------------------------------------------DUMP('蟹')
---------------------牛仔布;色织布;弹力牛仔布;竹节牛仔布;彩色牛仔布;提花牛仔布;牛仔服;牛仔裤;纱卡;灯蕊绒;Typ=1 Len=84: 197,163,215,208,178,188,59,201,171,214,175,178,188,59,181,175,193,166,
197,163,215,208,178,188,59,214,241,189,218,197,163,215,208,178,188,59,178,202,201,171,
197,163,215,208,178,188,59,204,225,187,168,197,163,215,208,178,188,59,197,163,215,208,
183,254,59,197,163,215,208,191,227,59,201,180,191,168,59,181,198,200,239,200,222,59Typ=96 Len=2: 208,183SQL> select 1 from dual where '仔服' like '%'||'蟹'||'%'; 1
----------
1SQL> Oracle is anything :: 评论 (6) :: 链接 :: 引用 (0)
[回复]
一般的说来,中文的字符集应该是正常的不是中文的字符集,则oracle在匹配的时候不能判别这相临字节是不是同一个字符
biti_rainy | 26/10/2004, 11:54
[回复]
那数据库为什么使用US7ASII呢?
daniel | 26/10/2004, 20:55
[回复]
数据库为什么使用 US7ASCII ?这个问题,你得要去问 5年前设计系统和创建数据库的人了那时我还不知道什么是oracle :)
biti_rainy | 27/10/2004, 13:36
字符集啊 [回复]
早些时候我们这边的数据库不知道使用的什么字符集,现在全给他升级咯^_^
jametong | 27/10/2004, 13:50
[回复]
US7ASCII 是7位的; 用来存储中文?字符集始终是很麻烦的事情
玉面飞龙 | 28/10/2004, 16:13
US7ASCII [回复]
US7ASCII我们也是使用的。他的特点是进去什么,出来就是什么。所以可以用来在一个表里存储很多种语言。缺点除了鼻涕所说,还有一个就是无法建立 domain index。无法使用oracle 的 全文检索。
java.sql.sqlexception:违反协议
at oracle.jdbc.dbaccess.dberror.throwsqlexception(dberror.java:134)
at oracle.jdbc.dbaccess.dberror.throwsqlexcepton(dberror.java:179)
at oracle.jdbc.dbaccess.dberror.check_error(dberror.java:1160)
at oracle.jdbc.ttc7.oclose.receive(oclose.java:133)
at oracle.jdbc.ttc7.ttc7protocol.close(ttc7protocol.java:683)
at oracle.jdbc.driver.oraclestatement.close(oraclestatement.java:644)的问题可能也跟此有关.