首页 > 解决方案 > 使用 SQL 匹配表中的两列是否存在

问题描述

我试图使用洗涤剂、肥皂、盘子等关键字来匹配我的 sql 表中的两列,如果关键字在两列中找到匹配,我希望另一列说它匹配。我打算使用 if exists 但我不知道正确的语法。

示例栏:

Column1                Column2
-----------------------------------------------
detergent powder       all powder detergent
dish washing liquid    dish liquid for washing 
hand soap              hand liquid soap

标签: sqlsql-serveretl

解决方案


这是您问题的最简单解决方案。诀窍在于我们在语句中创建的“虚拟”列,别名为Match 。select此列是使用case语句计算的,以查看搜索词是否出现在两列中。请注意,我们需要将like语句与通配符运算符一起使用%

create table Example (Column1 varchar(max), Column2 varchar(max));
insert into Example select 'detergent powder', 'all powder detergent';
insert into Example select 'dish washing liquid', 'dish liquid for washing' ;
insert into Example select 'hand soap', 'hand liquid soap';

declare @search varchar(20) = 'detergent';

select  Column1, 
        Column2, 
        case when Column1 like '%' + @search + '%' and 
                  Column2 like '%' + @search + '%' 
             then 'matched' 
             else 'not matched' end as [Match] 
from Example;

我们还可以将Match列创建为表中的“真实”列,并update根据相同的标准稍微修改此脚本以适应该列。


推荐阅读