sql server 中 in 和like 有什么区别?

作者&投稿:端虹 (若有异议请与网页底部的电邮联系)
在sql server 中like 一个字段~

由于不知道你是用SQLSERVER还是ORACLE,我就先给你一个SQLSERVER版本的吧!
如果你的字段定义是id为字符类型(nvarchar或varchar),而goid也是字符类型的话就很简单了!
直接用like或者charindex就行了!



测试sql如下:
create table #1(id varchar(10),goid varchar(10));
insert into #1( id,goid)values('123456','345'),('222444','123'),('56789','89'),('123','1');
select * from #1 where id like '%'+goid+'%';
select * from #1 where charindex(goid,id)>0;
drop table #1;




如果你的字段定义是id为字符类型(nvarchar或varchar),而goid是整型(int,tinyint等)的话就要转换一下!



测试sql如下:
create table #2(id varchar(10),goid int);
insert into #2( id,goid)values('123456',345),('222444',123),('56789',89),('123',1);
select * from #2 where id like '%'+convert(varchar,goid)+'%';
select * from #2 where charindex(convert(varchar,goid),id)>0;
drop table #2;




如果不属于上面两种情况,参考照转换方法都可以解决!



下面是ORACLE版本的!
因为ORACLE会自己来处理这些问题,直接用like或instr就行了!不分类型哈!


测试sql如下:
create table t1 (id nvarchar2(10),goid varchar(10));
insert into t1( id,goid)values('123456','345');
insert into t1( id,goid)values('222444','123');
insert into t1( id,goid)values('56789','89');
insert into t1( id,goid)values('123','1');
select * from t1 where id like '%'||goid||'%';
select * from t1 where instr(id,goid)>0;
drop table t1;

应该是上下两个结果对应的就不是同一行数据,你只展示了第一个结果的第6行和第二个结果的第1行,不知道对应的行是不是你截图里没有显示出来。

首先是in,in在检索语句当中检索出来的值和列表提供的值是完全符合的。比如数据当中有一个值是一个字符'name’那么在in语句当中你就要写成“in('name')”他还可以配合not使用,仅不过意思相反。
其次是like,like和in是有一定区别的,like一般与通配符一起使用,他可以检索出一些特地定格式的字符。比如在一系列的数据当中,你要求检索出以数字1开头的数据,你就可以使用like'1%'。这里要说明一下sql提供的通配符主要有四种 '%', '_', '[ ]', '[ ^ ]'。下面对通配符做一些简单说明:
1、'%'其后可用于接无数个字符串:在查询中如此使用like 's_',即可查出以s开头的值;
2、'_'其后仅可以得到一个字符,如以sales为例,like's_'如此使用,不能找出sales,而应like 'sale_'即可查出sales;
3、'[ ]'表示出现的字符是在一定的范围内,一般情况下它是配合'%'使用的。如like ’p[ r,o]%,他就可以查出以p开头的值,并且其后第二个字符,是r,或者是o,即pocket,product、、、
4、 '[ ^ ]'是与其相反的,如like ‘ p[^ r,o]% ',就是检索出以p开头但第二个字符不是r或o的字符。
希望我的回答能对你有所帮助

select * from 表 where name in (select name2 from 表)

select * from 表 where name like '张%'

通过上面的例子可以看出:
第一个 name in 后面是一个查询,查询出是一组数据,比如name2里查询结果是:'张三','李四','王五','赵六'
那么就查询出表内name包含了 '张三','李四','王五','赵六'的项目

第二个 name like '张%'
like 表示模糊查询
里面包含了通配符%
%代替任意N个字符
还有通配符:单个下横杠: _
_表示任意一个字符
也就是:查询name like '张%' 是查询结果里必须满足所有'张'字开头的数据,'张三','张四',张五','张XX','张XXX','张XXXXXXX'
都满足条件
如果用通配符name like '张_'查询name 里包含了所有'张'字开头的后面跟一个字符的数据,,'张三','张四',张五','张XX','张XXX','张XXXXXXX'
职能显示'张三','张四',张五'
而'张XX','张XXX','张XXXXXXX'就不满足条件

IN是具体匹配到其中包含的某一个值,可以在嵌套子查询时候用,也可以其后写具体的某几个值
LIKE是用于模糊查询,当不确定某些具体的字段时,可以利用通配符匹配,查询到自己想要的结果

like 可以用通配符匹配,一般用于模糊查询的
in相当于是多选
两个用途是不一样的

你自己上机写两条语句试试不就明白了


广汉市15255954960: Sql Server 中 in 和 between 的用法 -
由蚂参麦: 常用的情况: between: select * from [tablename] where [日期] between '2008-01-01' and '2008-10-31' --查询字段[日期]在2008-01-01(含)至2008-10-31(含)之间 表tablename的记录. in: 1、select * from [tablename] where [日期] in ('2008-01-...

广汉市15255954960: sql server 中 in 和like 有什么区别? -
由蚂参麦: 首先是in,in在检索语句当中检索出来的值和列表提供的值是完全符合的.比如数据当中有一个值是一个字符'name'那么在in语句当中你就要写成“in('name')”他还可以配合not使用,仅不过意思相反. 其次是like,like和in是有一定区别的,like一...

广汉市15255954960: Sql Server 中 in 和 between 的用法..? -
由蚂参麦: 操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围.这些值可以是数值、文本或者日期. IN 操作符允许我们在 WHERE 子句中规定多个值.IN 操作符允许我们在 WHERE 子句中规定多个值. 扩展资料: 结构化查询语言(Structured ...

广汉市15255954960: 在SQL SERVER 2008中'in'和'='有什么区别 -
由蚂参麦: select * from table1 where id in (1,2) select * from table1 where id = 1 or id = 2

广汉市15255954960: sql server中的关键字in和on有什么区别
由蚂参麦: IN是在什么什么范围中. 如:Select * from Appuser where UserID In (101,102,103,104) ON主要是用来做两个表的连接的. 如: select distinct customers.customerid,customers.companyname from customers join orders on (customers.customerid=orders.customerid ) where orders.shippeddate>2002-05-09

广汉市15255954960: Sql Server 中 in 和 between 的用法..in和berween的用法很难区分开来.\分别举例说明一下.-------------------------------------------------------------------- -
由蚂参麦:[答案] 常用的情况:between:select * from [tablename] where [日期] between '2008-01-01' and '2008-10-31' --查询字段[日期]在2008-01-01(含)至2008-10-31(含)之间 表tablename的记录.in:1、select * from [tablename] ...

广汉市15255954960: 在SQL联表查询的时候,in和inner join各有什么优点? -
由蚂参麦: in是子查询的结果作为父查询的条件,反回结果为父查询表的信.而后者是反回两表联合信息.

广汉市15255954960: sql server 嵌套查询语句中什么时候用in,什么时候又用exists! -
由蚂参麦: sqlserver嵌套查询语句中使用in或者exists的场景和原则如下:1. 如果查询的两个表大小相当,那么用in和exists差别不大.两者都可以使用.2. in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询.所以当有多重循环,使用in更合适,效率越高.3. 如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in.NOT EXISTS,exists的用法跟in不一样,一般都需要和子表进行关联,而且关联时,需要用索引,这样就可以加快速度.

广汉市15255954960: vfp,请问在查询中 in和=有什么区别? -
由蚂参麦: = 是两边的进行比较 in 左边的是否包含在右边的枚举中 in 只是vfp select-sql 语句中用的,借用的sql语句

广汉市15255954960: sql语句中条件查询里in、like、及=三个的效率怎么样? -
由蚂参麦: like最差,特别是以%(有的数据库是*)开头的匹配,是无法进行索引的,只有顺序扫描.in和=的本质是一样的,效率相同,都是走索引.当然,如果进行判断的那个字段没有建立索引,那么都是顺序查找,效率完全一样.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网