请教 为何查询不到数据?

chkmouse 2011-12-13 05:55:57

tableA
30
40
41
30,40,41


select * from tableA
where 1 = 1
and id in (30)


为什么只查处第一条数据呢?第四条数据没出来?
...全文
73 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyxlanmo 2011-12-14
  • 打赏
  • 举报
回复
select * from tableA
where id like '30%'

这样写才行 因为第四个本身就是一个字段形式的
pengxuan 2011-12-13
  • 打赏
  • 举报
回复
in 确定给定的值是否与子查询或列表中的值匹配。
也就是说第四行中的30,40,41 是否与括号中的30匹配,他们不是括号中的子集,所以查不出来

if object_id('tableA') is not null
drop table tableA
go
create table tableA
(
id varchar(20)
)
go
insert into tableA
select '30' union all
select '40' union all
select '41' union all
select '30,40,41'
go
select * from tableA where ','+id+',' like '%,30,%'
/*

(4 行受影响)
id
--------------------
30
30,40,41

(2 行受影响)
*/
yubofighting 2011-12-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xfxyxy 的回复:]
引用楼主 chkmouse 的回复:
tableA
30
40
41
30,40,41


select * from tableA
where 1 = 1
and id in (30)


为什么只查处第一条数据呢?第四条数据没出来?


我这边在SQL 05中没有问题。正常
[/Quote]

。。。
yubofighting 2011-12-13
  • 打赏
  • 举报
回复
in 后面跟的最小单位是一列。。。不是一列中的某个值
--小F-- 2011-12-13
  • 打赏
  • 举报
回复
select * from tableA where 1 = 1 and charindex(',30,' ,','+ltrim(id)+',')>0
小红伞 2011-12-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 chkmouse 的回复:]
tableA
30
40
41
30,40,41


select * from tableA
where 1 = 1
and id in (30)


为什么只查处第一条数据呢?第四条数据没出来?
[/Quote]

我这边在SQL 05中没有问题。正常
美到心痛 2011-12-13
  • 打赏
  • 举报
回复
in不是用来进行模糊查询的~
AcHerat 2011-12-13
  • 打赏
  • 举报
回复

select * from tableA
where 1 = 1
and ',30,' like ','+ltrim(id)+','
饮水需思源 2011-12-13
  • 打赏
  • 举报
回复
select * from tableA
where 1 = 1
and id like '30%'

唐诗三百首 2011-12-13
  • 打赏
  • 举报
回复
try this,

select * from tableA
where 1 = 1
and id like '%30%'
hllfl 2011-12-13
  • 打赏
  • 举报
回复
都in了 肯定查不出来喽

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧