SQL搜索记录以查找另一个表中存在的单词的匹配

问题描述 投票:0回答:2

我有两个表Client_Type和Client_Data

     Client_Type                             Client_Data
  Type    Description                ID   Type      Files
  -------------------               -----------------------------------
   A       AGREEMENT                 1   Student  PDF-Report Card.pdf
   E       EXAM PAPER                2   Teacher  PDF- Contract Agreement.pdf
   L       LETTER                    3   Student  word- Final exam paper.doc
   R       REPORT                    4   Student  PDF-Letter.pdf

我想根据以上两个表制作第三个表格

 ID   Client_Type.Type       Files
 ----------------------------------- 
  1      R                PDF-Report Card.pdf
  3      E                word- Final exam paper.doc
  4      L                PDF-Letter.pdf

我想搜索[Client_Data]。[Type],如果是Student,那么我想将[Client_Type]。[Description]与[Client_Data]匹配。[Files],如果有一个与描述匹配的单词我想要将类型分配给第三个表中的该记录

sql sql-server
2个回答
1
投票

你想要这样的东西:

SELECT cd.*, ct.type AS client_type
FROM client_data cd JOIN
     client_type ct
     ON cd.files LIKE '%' + ct.description + '%'
WHERE cd.type = 'Student';

如果您具有区分大小写的排序规则,则可以小写ON子句的列:

     on lower(cd.files) like '%' + LOWER(ct.description) + '%'

并且,如果是安全的,你想要保留所有学生,然后使用LEFT JOIN而不仅仅是JOIN


1
投票

这可能不会很快(取决于您的数据的大小),但它应该做你想要的:

SELECT
    cd.id,
    ct.type,
    cd.files
FROM
    client_data cd
    INNER JOIN client_type ct
        ON cd.Files LIKE '%' + ct.description + '%'
WHERE
    cd.Type = 'Student';
© www.soinside.com 2019 - 2024. All rights reserved.