【问题标题】:SQL Search rows that contain strings from 2nd table listSQL 搜索包含来自第二个表列表的字符串的行
【发布时间】:2016-11-14 13:56:08
【问题描述】:

我有一个包含要搜索的字符串列表的主表。如果单元格中的任何字符串包含主查找表中的文本,则返回 TRUE/FALSE。目前我使用excel的

=SUMPRODUCT(--ISNUMBER(SEARCH(masterTable,[@searchString])))>0

有没有办法在 SQL 中做这样的事情?如果字符串相等,LEFT JOIN 或 OUTER APPLY 将是简单的解决方案;但它们需要包含..

SELECT *
FROM t
WHERE col1 contains(lookupString,lookupColumn)


--that 2nd table could be maintained and referenced from multiple queries
hop
bell
PRS
2017

如果该行包含查找表中的任何字符串,我想要的结果将是一个显示 TRUE/FALSE 的列

 SEARCH_STRING      Contained_in_lookup_column
 hopping                 TRUE
 root                    FALSE
 Job2017                 TRUE
 PRS_tool                TRUE
 hand                    FALSE

【问题讨论】:

  • 编辑您的问题并提供示例数据和所需结果。

标签: sql


【解决方案1】:

对不起,我现在无法访问数据库来确认语法,但应该是这样的:

SELECT t.name,
case when (select count(1) from data_table where data_col like '%' || t.name || '%' > 0) then 'TRUE' else 'FALSE' end
FROM t;

SELECT t.name,
case when exists(select null from data_table where data_col like '%' || t.name || '%') then 'TRUE' else 'FALSE' end
FROM t; 

塞尔吉奥

【讨论】:

  • 我不认识 || ?也许我应该发布 SQL 版本 Microsoft SQL Server 2012 (SP1) - 11.0.3156.0 (X64) May 4 2015 18:48:09 Copyright (c) Microsoft Corporation Enterprise Edition: Core-based Licensing (64-bit) o​​n Windows NT 6.2 (内部版本 9200:)
  • 对不起,我假设是 Oracle .. 尝试 Sql Server 中的“+”(加号)运算符.. 应该可以解决问题
  • 谢谢。这太简单了,我觉得问起来很愚蠢
  • 实际上,我需要使用 CONTAINS 而不是 like.. 有什么诀窍可以让这项工作发挥作用吗?
  • 嗨,对不起.. 不是 SQL-SERV 方面的专家.. 已经有一段时间了,但应该是这样的:
【解决方案2】:

您可以将% 通配符与LIKEEXISTS 结合使用。

示例(使用 Oracle 语法) - 我们有一个包含数据的 v_data 表和一个包含查询词的 v_queries 表:

with v_data (pk, value) as (
  select 1, 'The quick brown fox jumps over the lazy dog' from dual union all
  select 2, 'Yabba dabba doo' from dual union all
  select 3, 'forty-two' from dual
),
v_queries (text) as (
  select 'quick' from dual union all
  select 'forty' from dual
)
select * from v_data d
where exists (
  select null 
  from v_queries q
  where d.value like '%' || q.text || '%');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-03
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多