sql 模糊查询另外一张表的字段

cn_shuyang 2019-03-13 04:45:57
两张表,
ECN表里面有ID,日期,ECNNum,文号,机种...等字段,(ECNNum长度12位)
Rules表里面有ECNnum_Rules,Class_Rules,Fclass_Rules字段,(ECNnum_Rules长度为2位)

请问如何:将表Rules里面ECNnum_Rules做为条件,判断ECN表里ECNNum前2位等于ECNnum_Rules的数据
AND
如果等于的话,就把数据要出来
然后在在这些数据里面判断ECN表中的文号是否等于Rules表中的ECNnum_Class字段
OR
或者ECN表中的机种名是否包含Rules表中的ECNnum_Fclass字段,
是的话,则在将这些数据抓取出来。谢谢。
...全文
813 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
八月十八 2019-03-28
  • 打赏
  • 举报
回复
CREATE TABLE #ECN
(PID VARCHAR(10),
DEPT_P VARCHAR(10),
ID VARCHAR(10))

INSERT INTO #ECN
SELECT 'EC123','A1','AA1' UNION ALL
SELECT 'EC124','B2','AA2' UNION ALL
SELECT 'ED125','A3','AA3' UNION ALL
SELECT 'EC126','A4','AA4'UNION ALL
SELECT 'EC127','B4','AA5'UNION ALL
SELECT 'EC128','A6','AA6'

CREATE TABLE #RULES
(PID VARCHAR(10),
DEPT_P VARCHAR(10),
ID VARCHAR(10))

INSERT INTO #RULES
SELECT 'EC','A1','AA2' UNION ALL
SELECT 'MP','A2','AA1' UNION ALL
SELECT '','A3','' UNION ALL
SELECT '','A4',''UNION ALL
SELECT '','A6',''


SELECT A.*
FROM #ECN A JOIN #RULES B ON LEFT(A.PID,2)=B.PID AND A.DEPT_P=B.DEPT_P
UNION
SELECT A.*
FROM #ECN A JOIN #RULES B ON A.ID LIKE '%'+B.ID+'%'
cn_shuyang 2019-03-18
  • 打赏
  • 举报
回复
补充图片实列
cn_shuyang 2019-03-18
  • 打赏
  • 举报
回复
引用 2 楼 RINK_1 的回复:

SELECT A.* 
FROM ECN A JOIN RULES B ON LEFT(A.ECNNUM,2)=B.ECNNUM_RULES AND A.文号=B.ECNnum_Class
UNION 
SELECT A.*
FROM ECN A JOIN RULES B ON A.机种名 LIKE '%'+B.ECNnum_Fclass+'%'

跑出来的结果有一个问题就是ECNNUM不等于ecnnum_rules的数据也会跑出来 。
xiaoliuvv 2019-03-15
  • 打赏
  • 举报
回复
select *from (select * from Rules where ECN.文号=ECNnum_CLass or CHARINDEX(ECNnum_FcLass ,ECN.机种名)>0) a  join ECN on  a.ECNnum_rules=LEFT(ECN.ECNNum,2)
honghuangbu0446 2019-03-15
  • 打赏
  • 举报
回复
select * from ECN where exists ( select * from Rules where ECNnum_Rules = left( ECNNum, 2 ));
RINK_1 2019-03-13
  • 打赏
  • 举报
回复

SELECT A.* 
FROM ECN A JOIN RULES B ON LEFT(A.ECNNUM,2)=B.ECNNUM_RULES AND A.文号=B.ECNnum_Class
UNION 
SELECT A.*
FROM ECN A JOIN RULES B ON A.机种名 LIKE '%'+B.ECNnum_Fclass+'%'

XXXXn帅气 2019-03-13
  • 打赏
  • 举报
回复
select *from (select * from Rules where ECN.文号=ECNnum_CLass or CHARINDEX(ECNnum_FcLass ,ECN.机种名)>0) a join ECN on a.ECNnum_rules=LEFT(ECN.ECNNum,2)

34,587

社区成员

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

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