【发布时间】:2013-02-25 19:33:02
【问题描述】:
我无法弄清楚如何让 SQLite 返回表中的所有条目,其中“列”包含在 select 语句的结果中找到的文本。
如果有任何意义,我希望它能够像这样工作:
select * from table1`
where ("%" || (column) || "%") like in
("%" || (select different_column from table2) || "%")`
任何帮助将不胜感激。如果有人需要更多信息,请告诉我。
编辑:抱歉,我已将格式编辑为更具可读性,并在下面添加了更多细节。我还删除了我可笑的难以理解的 cmets,而只支持编辑这个问题。
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(警报)中的所有条目,其中 table1 的“lookup_info”列 not 在其中某处包含存储在 table2(设备)中的计算机名称,位于 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")
当然,这仍然不起作用。查询不返回任何内容。我做错了什么?
【问题讨论】:
-
请修改您的问题以包含样本数据和样本结果。
-
感谢您抽出宝贵时间@GordonLinoff。我已经编辑了我的问题以增加其清晰度。
标签: sql string sqlite full-text-search sql-like