查询里A表字段中包含B表字段问题

chen123455 2012-08-23 11:44:15
查询里A表字段中包含B表字段问题
比如 AA表如
xh shengccj
1 河南羚锐生物药业
2 四川蜀中制药有限公司
3 海口奇力制药

BB表
xh shengccj
1 河南羚锐生物
1 河南中杰药业
2 四川蜀中制药
2 海口奇力制药
3 河南中杰药业
我想查询 的条件为 A表xh=b表xh a表中shengccj 必须在b表中shengccj的
结果为
xh shengccj
1 河南羚锐生物药业
2 四川蜀中制药有限公司


我是这么写的 select a.xh,b.shengccj from AA a,BB b where a.xh=b.xh and a.shengccj like '%'+b.shengccj+'%'
但得出的结果为空 那里错了呢 正确应该怎么写 求指教


...全文
727 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanshine 2012-08-24
  • 打赏
  • 举报
回复
你的思路和语句基本没问题,我试了一下,是有结果的,
但要得到你要的结果,SELECT的字段要修改成 a.xh,a.shengccj

DECLARE @AA TABLE
(
[xh] [nvarchar](50) NOT NULL,
[shengccj] [nvarchar](50) NOT NULL
)

INSERT INTO @AA
SELECT 1,'河南羚锐生物药业' UNION ALL
SELECT 2,'四川蜀中制药有限公司' UNION ALL
SELECT 3,'海口奇力制药'

DECLARE @BB TABLE
(
[xh] [nvarchar](50) NOT NULL,
[shengccj] [nvarchar](50) NOT NULL
)

INSERT INTO @BB
SELECT 1,'河南羚锐生物' UNION ALL
SELECT 1,'河南中杰药业' UNION ALL
SELECT 2,'四川蜀中制药' UNION ALL
SELECT 2,'海口奇力制药' UNION ALL
SELECT 3,'河南中杰药业'

SELECT * FROM @AA
SELECT * FROM @BB

SELECT a.xh,b.shengccj
FROM @AA a,@BB b
WHERE a.xh=b.xh
AND a.shengccj LIKE '%'+b.shengccj+'%'

SELECT a.xh,a.shengccj
FROM @AA a,@BB b
WHERE a.xh=b.xh
AND a.shengccj LIKE '%'+b.shengccj+'%'
chen123455 2012-08-24
  • 打赏
  • 举报
回复
就是同样xh中 AA表的 shengccj中 包含BB表的shengccj 字段
chen123455 2012-08-24
  • 打赏
  • 举报
回复
想要的结果为
xh shengccj
1 河南羚锐生物药业
2 四川蜀中制药有限公司

shoppo0505 2012-08-24
  • 打赏
  • 举报
回复
当然是空了, a.xh=b.xh 限制了ID为1,2,3,然而A中满足条件的 shengccj 又都比 B中的字段长.

贴出你想要的结果才能帮你写code.
雪祭2012 2012-08-24
  • 打赏
  • 举报
回复
/**(26)
* program:CSDN问答练习
* username:zsq
* cteatetime:2012-8-24
* 心得:?
* 配置:sql server 2008
*/
-- 查询里A表字段中包含B表字段问题
--比如 AA表如
--xh shengccj
--1 河南羚锐生物药业
--2 四川蜀中制药有限公司
--3 海口奇力制药

--BB表
--xh shengccj
--1 河南羚锐生物
--1 河南中杰药业
--2 四川蜀中制药
--2 海口奇力制药
--3 河南中杰药业
--我想查询 的条件为 A表xh=b表xh a表中shengccj 必须在b表中shengccj的
--结果为
--xh shengccj
--1 河南羚锐生物药业
--2 四川蜀中制药有限公司


--我是这么写的 select a.xh,b.shengccj from AA a,BB b where a.xh=b.xh and a.shengccj like '%'+b.shengccj+'%'
--但得出的结果为空 那里错了呢 正确应该怎么写 求指教

DECLARE @a TABLE (xh INT IDENTITY(1,1),shengccj NVARCHAR(255))
DECLARE @b TABLE (xh INT ,shengccj NVARCHAR(255))
INSERT INTO @a ( shengccj )
SELECT '河南羚锐生物药业' UNION ALL
SELECT '四川蜀中制药有限公司' UNION ALL
SELECT '海口奇力制药'
INSERT INTO @b ( xh , shengccj )
SELECT 1,'河南羚锐生物' UNION ALL
SELECT 1,'河南中杰药业' UNION ALL
SELECT 2,'四川蜀中制药' UNION ALL
SELECT 2,'海口奇力制药' UNION ALL
SELECT 3,'河南中杰药业'

select a.xh,a.shengccj from @a a,@b b where a.xh=b.xh and a.shengccj like '%'+b.shengccj+'%'
----------------------------------------------end

按你的要求做的,还是你的代码,只是把select后边的b.shengccj改成a.shengccj 结果:
-------------------------------
1 河南羚锐生物药业
2 四川蜀中制药有限公司
孤独加百列 2012-08-24
  • 打赏
  • 举报
回复

IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'AA')
BEGIN
DROP TABLE AA
END
GO
CREATE TABLE AA
(
xh INT,
shengccj VARCHAR(100)
)
GO
INSERT INTO AA
SELECT 1, '河南羚锐生物药业' UNION
SELECT 2, '四川蜀中制药有限公司' UNION
SELECT 3, '海口奇力制药'
GO
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'BB')
BEGIN
DROP TABLE BB
END
GO
CREATE TABLE BB
(
xh INT,
shengccj VARCHAR(100)
)
GO
INSERT INTO BB
SELECT 1, '河南羚锐生物' UNION
SELECT 1, '河南中杰药业' UNION
SELECT 2, '四川蜀中制药' UNION
SELECT 2, '海口奇力制药' UNION
SELECT 3, '河南中杰药业'
GO
SELECT AA.*
FROM AA INNER JOIN BB ON AA.xh = BB.xh AND CHARINDEX(BB.shengccj,AA.shengccj) > 0

xh shengccj
1 河南羚锐生物药业
2 四川蜀中制药有限公司
以学习为目的 2012-08-24
  • 打赏
  • 举报
回复

CREATE TABLE AA
(
xh INT,
shengccj VARCHAR(100)
)


INSERT INTO AA
SELECT 1, '河南羚锐生物药业'
UNION ALL
SELECT 2, '四川蜀中制药有限公司'
UNION ALL
SELECT 3, '海口奇力制药'

CREATE TABLE BB
(
xh INT,
shengccj VARCHAR(100)
)
INSERT INTO BB
SELECT 1, '河南羚锐生物'
UNION ALL
SELECT 1, '河南中杰药业'
UNION ALL
SELECT 2, '四川蜀中制药'
UNION ALL
SELECT 2, '海口奇力制药'
UNION ALL
SELECT 3, '河南中杰药业'
GO
--开始查询
--1
select a.xh,a.shengccj from AA a left join BB b on a.xh=b.xh where b.shengccj like substring(a.shengccj,1,6)
--2
select a.xh,a.shengccj from AA a ,BB b where a.xh=b.xh and b.shengccj like left(a.shengccj,6)
--3
select a.xh,a.shengccj from AA a,BB b where a.xh=b.xh and a.shengccj like '%'+b.shengccj+'%' --这个也可以出结果啊
/*
-----------------------------------------------------------------------
xh shengccj
1 河南羚锐生物药业
2 四川蜀中制药有限公司



(2 行受影响)
------------------------------------------------------------------------
*/
chen123455 2012-08-24
  • 打赏
  • 举报
回复
但是我放在实际的例子中就是查不出结果 不知道为什么
有没有那位高人来教教我
chen123455 2012-08-24
  • 打赏
  • 举报
回复
但是我房子实际的例子中就是查不出结果 不知道为什么

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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