当前位置: 代码迷 >> Oracle开发 >> varchar2门类字段,用VB6写sql,查询条件无法匹配两个字符(一个正常)
  详细解决方案

varchar2门类字段,用VB6写sql,查询条件无法匹配两个字符(一个正常)

热度:22   发布时间:2016-04-24 07:26:25.0
varchar2类型字段,用VB6写sql,查询条件无法匹配两个字符(一个正常)。
test数据表中有一个字段名为name_1字段,字段类型为 varchar2 字段内容假设为 张三盟 
在sql2005 里面 语法如下 

select * from test where name_1 like '%张三%' 
可以查询出来记录。 

但是在oracle 里面 
 select * from test where name_1 like '%张三%' 

  select * from test where name_1 = 张三盟' 

查询没有记录,用
 select * from test where name_1 like '%张%' 

 select * from test where name_1 like '%三%' 

查询有记录,不知道是什么原因?


------解决方案--------------------
貌似没碰过这情况

SQL code
create table t1 (name_1 varchar2(10));insert into t1 values ('张三卖');insert into t1 values ('张三盟');insert into t1 values ('李四卖');insert into t1 values ('李四人');select * from t1 where name_1 like '%张三%';     name_1 ---------------1    张三卖2    张三盟
------解决方案--------------------
可能‘张 三 盟’中存在空格
------解决方案--------------------
有空格那肯定查不到了 空格是怎么个空法 一个么?

SQL code
create table t1 (name_1 varchar2(10));insert into t1 values ('张 三 卖');insert into t1 values ('张三盟');insert into t1 values ('李四卖');insert into t1 values ('李四人');select * from t1 where replace(name_1,' ','') like '%张三%';     name_1 ---------------1    张 三 卖2    张三盟
------解决方案--------------------
1 假设字符集错误 那么你查询出来的结果不应该正常显示,应该是乱码

2 假设字符集没错 那么说明你现在这个SQLselect * from test where name_1 like '%张三%'

输入的'张三' 根本不是正常的'张三',看你这个SQL在哪里输入的。