| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1884 人关注过本帖
标题:请高手帮助解决一个SQL查询
只看楼主 加入收藏
temptemptemptem
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-8-5
收藏
 问题点数:0 回复次数:10 
请高手帮助解决一个SQL查询
有两个表,表1,表2
表1                     表2
姓名   身份证号    地址                      电话     业务
张三  123456  北京123          12345678  0001  张三  500 56556
李四  566789  上海155          56545644  125  王五  5151 655615651
王五  515151  山东55151         55551515  李四 55151516 61556151
……                    ……
表2中“业务”列中数据不规则,但都包含了表1中的一个“姓名”列中的一个姓名,并且姓名是唯一的,怎样通过SQL语句得到以下结果:
 
姓名   身份证号    地址              电话     
张三  123456  北京123      12345678  
李四  566789  上海155      55551515 
王五  515151  山东55151     56545644
……
搜索更多相关主题的帖子: SQL 查询 
2008-08-05 22:11
leros
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-7-30
收藏
得分:0 
seclet a.姓名,a.身份证号,a.地址,b.电话 from 表1 a left join 表2 b on a.姓名 like '%b.业务%'

[[it] 本帖最后由 leros 于 2008-8-5 22:52 编辑 [/it]]
2008-08-05 22:46
temptemptemptem
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-8-5
收藏
得分:0 
谢谢leros,这样是不行的,我试过了。
当b.业务在单引号中时,仅代表了字符“b.业务”,并不是“表2”的“业务”列。
不知道有没有其它办法,并不一定要用一句SQL语句,多几句也行,关键是要解决问题。先行谢过了。
2008-08-06 22:23
bb3852
Rank: 1
等 级:新手上路
帖 子:82
专家分:0
注 册:2008-4-21
收藏
得分:0 
代码写在里面了
http://hi.baidu.com/bb3852/blog/item/136ff4014ae785087aec2c01.html

http://hi.baidu.com/bb3852
数据库开发有兴趣的朋友们,里面有很多原创代码
qq:184882759
2008-08-07 09:38
seiya027848
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2008-6-27
收藏
得分:0 
楼上的方法很简单。用游标也可以做,但是太复杂
2008-08-07 11:15
temptemptemptem
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-8-5
收藏
得分:0 
谢谢bb3852,帮我解决了一个难题,同时也学到了一个新函数。
我的SQL语言是通过“SQL21日自学通”学习的,平常也够用了,现在才发现要学的东西还有很多,特别是数据库的扩展功能部分,每个数据库都有其特别之处。今天专门看了SQL server2000函数部分,还有很多函数都没有看过,真是惭愧。
2008-08-07 14:36
bb3852
Rank: 1
等 级:新手上路
帖 子:82
专家分:0
注 册:2008-4-21
收藏
得分:0 
大家一起学

http://hi.baidu.com/bb3852
数据库开发有兴趣的朋友们,里面有很多原创代码
qq:184882759
2008-08-08 09:06
qazzwj
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-8-16
收藏
得分:0 
declare  @t table([name] varchar(50),[Identity] varchar(100),Address varchar(1000))
declare  @e table ([Phone] varchar(50),Business varchar(1000))

insert into @t
select '张三','123456','北京123'
union all
select '李四','566789','上海155'
union all
select '王五','545445','山东55763'


insert into @e
select '123478','001 张三 500 879'
union all
select '5345231','545 王五 456 212'



select a.*,b.* from @t a join @e b on b.Business like '%'+a.name+'%'
2008-08-16 16:23
qazzwj
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-8-16
收藏
得分:0 
另一个解决方案
declare  @t table([name] varchar(50),[Identity] varchar(100),Address varchar(1000))
declare  @e table ([Phone] varchar(50),Business varchar(1000))

insert into @t
select '张三','123456','北京123'
union all
select '李四','566789','上海155'
union all
select '王五','545445','山东55763'


insert into @e
select '123478','001 张三 500 879'
union all
select '5345231','545 王五 456 212'

select a.*,b.* from @t a join @e b on b.Business like (select '%',name 'text()','%' from @t where name=a.name for XML path(''))

注意:在组织like后面的字符串时,我使用了for xml语法。尽管可以使用'%'+a.name+'%'来组织,但从SQL Server 2005 Book online上的说法,微软不保证'%'+a.name+'%'正确性。
2008-08-16 16:30
zhouyulv
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-12-1
收藏
得分:0 
都是高手..
2008-08-19 10:32
快速回复:请高手帮助解决一个SQL查询
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016639 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved