SQLite:确定字符串的任何部分是否包含选择查询返回的任何一个(多个)字符串

问题描述:

我无法确定如何要求SQLite返回表中“列”包含文本的所有条目在选择语句的结果中。SQLite:确定字符串的任何部分是否包含选择查询返回的任何一个(多个)字符串

我想它的工作有点像这样,如果这使得任何意义:

select * from table1` 
where ("%" || (column) || "%") like in 
("%" || (select different_column from table2) || "%")` 

任何帮助将非常感激。请让我知道是否有人需要更多信息。

编辑:我的道歉,我已编辑的格式更具可读性,并在下面添加了更多的细节。我也删除了我可笑的无法读取的评论,赞成编辑这个问题。

table1(alerts)包含一个名为“lookup_info”的列,该列存储一个字符串。该字符串一般如下所示:

--- 
:account_description: Administrator 
:alertable_class: Computer 
:alertable_name: exampledotnet 
:network_account_type: 
:wmi: 
:user: exampledomain\administrator 

table2(devices)包含一个名为“name”的列,该列存储一个字符串。该字符串一般是这样的:

so-ws-rm101 

我想要做的是返回table1中的所有条目(警报),其中表1的“lookup_info”一栏确实包含内某处存储在表2的计算机名(设备)在table2的“名称”列下。

基本上,有一些警报引用不再存在的计算机名称。我想要这些警报。

谢谢。

编辑:我已经通过alerts_fts的名称创建了一个fts3表,其中包含alerts表中所有条目的lookup_info列。我这次使用全文检索再次尝试我的搜索。这是我使用的查询:

select * 
    from alerts_fts 
    where alerts_fts.lookup_info match (select group_concat(name, " OR ") 
         from Devices 
         group by "x") 

这应该使查询的样子:

select * 
    from alerts_fts 
    where alerts_fts.lookup_info match (cw-ws-example OR so-p2-132-example OR 
         ... OR so-p4-lastexample) 
         group by "x") 

当然,这仍然没有工作。查询不返回任何内容。我究竟做错了什么?

+0

请修改您的问题以包含样本数据和样本结果。 – 2013-02-27 19:03:56

+0

谢谢你的时间@GordonLinoff。为了提高清晰度,我编辑了我的问题。 – user2069730 2013-02-27 19:54:07

我认为你需要做到这一点联接:

select t1.** 
from table1 t1 join 
    table2 t2 
    on t1.column like '%'||t2.column||'%' 

如果有多个匹配的可能性,你要添加distinct

​​

也许这是你需要的:

select t1.** 
from table1 t1 join 
    table2 t2 
    on t1.column like '%'||t2.columnA||'%' or 
     t1.column like '%'||t2.columnB||'%' or 
     t1.column like '%'||t2.columnC||'%' or 
     . . . 

根据你的编辑,我想你想要一个左外连接和th en表示没有匹配的检查:

select table1.* 
from table1 left outer join 
    table2 
    on t1.column like '%'||t2.column||'%' 
where t2.column is null 
+0

不幸的是,这似乎还没有工作。感谢你的坚持。这个问题开始困扰着我。 – user2069730 2013-03-01 18:40:03

+0

我再次编辑了我的问题,只是添加了一个以“基本上”开头的行,再次感谢您的帮助。 – user2069730 2013-03-01 19:41:40

+0

嗨Gordon和@sgeddes。我再次编辑了我的文章,包括我现在正在处理的方法。任何帮助将非常感激。 – user2069730 2013-03-15 18:13:23

不能使用像配有,但你可以做这样的事情假设你想要么柱匹配回:

Select Distinct table1.* 
From table1 
    Join table2 On 
    column1 like '%'||different_column||'%' 
    Or different_column like '%'||column1||'%' 

SQL Fiddle Demo

+0

谢谢@sgeddes您的回复。不幸的是,这并没有返回所需的信息。我编辑了我的问题并添加了更多信息。 – user2069730 2013-02-27 19:55:33