问个简单的select语句问题

ShiningG 2008-03-22 04:11:21
A表内A.1字段值为'1','2','3','4'
B表内,B.1字段值为'2','3'

请问我想查A表和B表这两个字段出现重合的值,也就是要查出'2','3'来,这条语句应该怎么写啊?
...全文
65 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Limpire 2008-03-22
如果是这样,就复杂多了,以前也回过一个类似的。

楼主似乎还要提供更多的规则,比如方向性,B改为3,2算不算重合

2楼写的只是简单地将B作为一个整体,查找是否是出现重合,B调个方向或改为2,3,5,就要歇菜。
回复
dawugui 2008-03-22
那天有个分解的,忘记哪里去了.给个分解函数给你.

/*
功能:实现split功能的函数
*/

create function dbo.fn_split
(
@inputstr varchar(8000),
@seprator varchar(10)
)
returns @temp table (a varchar(200))
as

begin
declare @i int

set @inputstr = rtrim(ltrim(@inputstr))
set @i = charindex(@seprator, @inputstr)

while @i >= 1
begin
insert @temp values(left(@inputstr, @i - 1))

set @inputstr = substring(@inputstr, @i + 1, len(@inputstr) - @i)
set @i = charindex(@seprator, @inputstr)
end

if @inputstr <> '\'
insert @temp values(@inputstr)

return
end
go

--调用

declare @s varchar(1000)

set @s='1,2,3,4,5,6,7,8,55'

select * from dbo.fn_split(@s,',')

drop function dbo.fn_split





回复
dawugui 2008-03-22
[Quote=引用楼主 ShiningG 的帖子:]
A表内A.1字段值为'1','2','3','4'
B表内,B.1字段值为'2','3'

请问我想查A表和B表这两个字段出现重合的值,也就是要查出'2','3'来,这条语句应该怎么写啊?
[/Quote]

我估计要把这两字符串逐一分解然后比较.
回复
pt1314917 2008-03-22


declare @a table(val varchar(50))
insert into @a select '''1'',''2'',''3'',''4'''

declare @B table(val varchar(50))
insert into @b select '''2'',''3'''


select b.* from @b b left join @a a on charindex(','+b.val+',',','+a.val+',')>0
回复
Limpire 2008-03-22
select a.字段 from A表 a join B表 b on a.字段=b.字段
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-03-22 04:11
社区公告
暂无公告