首页 > 解决方案 > 如何按字段过滤包含另一个字段

问题描述

我有一个包含“内容”字段和“国家”字段的表格。我需要检查国家名称是否出现在文本内容中。

内容:

国家:

使用 like 子句似乎是正确的选择,但我不知道如何使用 country 字段中的值进行此类检查。

标签: sqlsql-server

解决方案


使用字典表的幼稚方法:

CREATE TABLE country(id INT, name NVARCHAR(100));
INSERT INTO country(id, name) VALUES (1, 'United States'), (2, 'France'), (3, N'ישראל');

SELECT *
FROM mytable m
JOIN country c
  ON m.content LIKE '%' + c.name + '%';

当然,这不是万无一失的解决方案,因为国家可能会因语言和名词大小写而异。

编辑:

如果国家/地区存在于同一行:

SELECT *,
    CASE WHEN m.content  LIKE '%' + m.country + '%' THEN 'Present' ELSE 'None' END
FROM mytable m

推荐阅读