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

时间:2021-02-02 15:13:12
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 '%三%' 

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

9 个解决方案

#1


貌似没碰过这情况


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 张三盟

#2


可能‘张 三 盟’中存在空格

#3


有空格那肯定查不到了  空格是怎么个空法 一个么?


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 张三盟

#4


绝对没有空格的,我没有oracle环境,只是对方说,oracle是美国字符集,不知是否这个原因

#5


1 假设字符集错误  那么你查询出来的结果不应该正常显示,应该是乱码

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

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

#6


在vb6写的一个小测试程序里,通过ODBC连接的Oracle,测试程序里只有一个Text,直接输入的SQL语句。结果就出现了上述问题。现场用相同的语句,在pl/sql里正常的。

#7


在vb6写的一个测试程序里,只有一个Text,在里面输入的SQl语句,放在同一台计算机的PL/SQL里,就能正常查询数据的。郁闷。

#8


引用 7 楼  的回复:
在vb6写的一个测试程序里,只有一个Text,在里面输入的SQl语句,放在同一台计算机的PL/SQL里,就能正常查询数据的。郁闷。


你要么都用PL-SQL 要么都用VB

两个不一样环境的东西有什么可比较的,你的VB和PL-SQL不是统一程序,也未见得使用同一种字符集。

#9


算了,我绕个弯解决的。没办法

#1


貌似没碰过这情况


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 张三盟

#2


可能‘张 三 盟’中存在空格

#3


有空格那肯定查不到了  空格是怎么个空法 一个么?


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 张三盟

#4


绝对没有空格的,我没有oracle环境,只是对方说,oracle是美国字符集,不知是否这个原因

#5


1 假设字符集错误  那么你查询出来的结果不应该正常显示,应该是乱码

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

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

#6


在vb6写的一个小测试程序里,通过ODBC连接的Oracle,测试程序里只有一个Text,直接输入的SQL语句。结果就出现了上述问题。现场用相同的语句,在pl/sql里正常的。

#7


在vb6写的一个测试程序里,只有一个Text,在里面输入的SQl语句,放在同一台计算机的PL/SQL里,就能正常查询数据的。郁闷。

#8


引用 7 楼  的回复:
在vb6写的一个测试程序里,只有一个Text,在里面输入的SQl语句,放在同一台计算机的PL/SQL里,就能正常查询数据的。郁闷。


你要么都用PL-SQL 要么都用VB

两个不一样环境的东西有什么可比较的,你的VB和PL-SQL不是统一程序,也未见得使用同一种字符集。

#9


算了,我绕个弯解决的。没办法