sql语句如何将指定表内的关键字匹配到另一个表?

zouxinwang1993 2016-08-17 11:33:18
现有 表【information】和表【keyword】分别如图1,图2所示:

我想用表【keyword】内的关键字去匹配表【information】内的 [描述]字段,并新插入列,实现如图3的效果:

主要问题:
1,我想用指定表内的关键字去匹配另一表(表【keyword】内关键字是可以更改的)
2,匹配后,如果存在多个关键字的话,用“,”隔开。
3,可能涉及到模糊查询,如上图内“ADF的天线”“ADF下天线”等都得识别出来为“ADF天线“。
4,数据量是百万级的。
PS:
1,我是用的sql server 2008 r2
2,本人完全小白,麻烦各位大神说的详细点。
3,搜了搜相关资料,会用到"正则表达式"吗?还有哪些方面的"模糊查询",“多关键字查询”?如果涉及到哪些方面的知识,还请给指点个方向。
最后的最后,再次跪谢!!!
...全文
1073 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2016-08-17
  • 打赏
  • 举报
回复
UPDATE a
SET a.新列=b.NewCol
FROM information AS a
	CROSS APPLY(SELECT ','+'word' FROM keyword WHERE a.描述 LIKE '%'+word+'%' FOR XML PATH('')) AS b(NewCol)
中国风 2016-08-17
  • 打赏
  • 举报
回复
ALTER TABLE 表 ADD 新列 VARCHAR(200) 这样加 如果与更新同时用,要用动态 exec('ALTER TABLE 表 ADD 新列 VARCHAR(200)') exec('更新新列语句')
zouxinwang1993 2016-08-17
  • 打赏
  • 举报
回复
引用 7 楼 roy_88 的回复:
在keyword需要分两条记录,明白
好的,知道了,非常感谢这么详细的解答! 还有就是,可以在执行语句让系统自动新建一列吗?不用提前自己创建。 我是刚接触到这个,了解的连皮毛到算不上,请问如果想要学深点,版主有什么建议吗?和推荐的书,视频?
中国风 2016-08-17
  • 打赏
  • 举报
回复
在keyword需要分两条记录,明白
中国风 2016-08-17
  • 打赏
  • 举报
回复
ADF天线--这样的格式提不了出来,这要做分词 把关健字 拆为 ADF 和 天线
zouxinwang1993 2016-08-17
  • 打赏
  • 举报
回复
引用 4 楼 roy_88 的回复:
UPDATE a
SET a.新列=STUFF(b.NewCol,1,1,'')
FROM information AS a
CROSS APPLY(SELECT ','+部件 FROM keyword WHERE a.描述 LIKE '%'+部件+'%' FOR XML PATH('')) AS b(NewCol)


这样改


改过之后可以了,不过有个小问题,

1,就是涉及到"ADF天线"的模糊查询没有提取出来?请问该怎么加上 识别符 或者 通配符呢?
2,还有就是,现在必须是自己先新建一列,才执行语句;可以执行语句让系统自动新建一列吗?
谢谢!
中国风 2016-08-17
  • 打赏
  • 举报
回复
UPDATE a
SET a.新列=STUFF(b.NewCol,1,1,'')
FROM information AS a
	CROSS APPLY(SELECT ','+部件 FROM keyword WHERE a.描述 LIKE '%'+部件+'%' FOR XML PATH('')) AS b(NewCol)
这样改
zouxinwang1993 2016-08-17
  • 打赏
  • 举报
回复
引用 1 楼 roy_88 的回复:
UPDATE a
SET a.新列=b.NewCol
FROM information AS a
CROSS APPLY(SELECT ','+'word' FROM keyword WHERE a.描述 LIKE '%'+word+'%' FOR XML PATH('')) AS b(NewCol)


在表【information】下,我新建了一列 “新列”
UPDATE a
SET a.新列=b.NewCol
FROM information AS a
CROSS APPLY(SELECT ','+'word' FROM keyword WHERE a.描述 LIKE '%'+部件+'%' FOR XML PATH('')) AS b(NewCol)

不过最后出来的是这个效果,

请问我这是有什么问题吗?
zouxinwang1993 2016-08-17
  • 打赏
  • 举报
回复
在表【information】下,我新建了一列 “新列”
UPDATE a
SET a.新列=b.NewCol
FROM information AS a
CROSS APPLY(SELECT ','+'word' FROM keyword WHERE a.描述 LIKE '%'+部件+'%' FOR XML PATH('')) AS b(NewCol)

不过最后出来的是这个效果,

请问我这是有什么问题吗?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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