【问题标题】:SQLITE3 want to find LIKE data within table using long listSQLITE3 想使用长列表在表中查找 LIKE 数据
【发布时间】:2018-12-14 19:26:38
【问题描述】:

我有一个包含超过 100 万行和多列的 SQLITE3 表,其中之一是“email_address”。 我还有一个单独的列表,其中包含大约 20 万个网络域。

我想从我的表中找到所有包含这些域的电子邮件地址的行。 我可以弄清楚如何使用“从表中选择 * from table where email_address like '%domain';”单独完成。 但是有谁知道我如何在批量级别上做到这一点?

【问题讨论】:

    标签: sqlite sql-like


    【解决方案1】:

    只是猜测表和列的名称。
    在 2 个表之间使用连接:

    SELECT d.domain, e.email_address
    FROM domains as d
    INNER JOIN emails as e
    ON e.email_address LIKE '%' || d.domain
    

    【讨论】:

      【解决方案2】:

      你也可以不用 LIKE。类似的东西

      select emailAddr,domainName
      from email
      JOIN domains on substr(emailAddr,instr(emailAddr,'@')+1) = domainName
      

      您可以在电子邮件地址的域部分创建索引,例如

      CREATE INDEX emailAddr_idx ON email ( substr(emailAddr,instr(emailAddr,'@')+1) )

      我不知道是否有足够大的数据集来测试其功效/影响。

      【讨论】:

        【解决方案3】:

        能够让这个为我工作:

        create table final as select * from alladdresses join alldomains on substr(email_address,instr(email_address,'@')+1) = domain;

        创建了一个新表,其中包含与我拥有的域匹配的所有地址信息,并添加到仅域的额外列中。 感谢那些让我走上正确道路的人!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-17
          • 2018-02-11
          • 1970-01-01
          相关资源
          最近更新 更多