【问题标题】:SQL SELECT from table when substring is in a string子字符串在字符串中时从表中选择 SQL
【发布时间】:2014-04-06 06:22:11
【问题描述】:

假设我在 sqlite3 数据库(通过 python)中有一个名为 table1 的表,其中包含名为“id”和“string”的两列,这是表中的三个条目:

   id                string
  'a'               'google'
  'b'               'apple'
  'c'            'application' 

假设我想要所有包含“app”的行,那么我该怎么做呢?我正在寻找这样的东西:

SELECT * FROM table1 WHERE 'app' in string

理论上会返回最后两行....

【问题讨论】:

    标签: python sql sqlite


    【解决方案1】:

    你可以使用LIKE

    SELECT * FROM table1 
    WHERE string LIKE '%app%'
    

    DEMO

    更新:

    当您使用前面的通配符 (LIKE '%app%') 时,性能将大致相同。

    如果你想要以app 开头的字符串,那么使用LIKE 'app%' 会更好。原因如下:-

    第一个通配符之前的部分用作访问谓词,即它们限制扫描的索引范围。这 剩余字符不会缩小扫描的索引 范围——不匹配的条目会被排除在结果之外。

    【讨论】:

    • 但我听说like 很慢.. 我怎样才能让它快点?
    • @AnshumanDwibhashi - 看看stackoverflow.com/questions/2451608/…
    • @AnshumanDwibhashi 字段中的所有值是否都以 'app' 开头,或者它可以在字符串中的任何位置
    【解决方案2】:

    试试这个:

    SELECT * FROM table1 WHERE string LIKE '%app%'
    

    【讨论】:

      【解决方案3】:

      这很简单。您需要在 SQL 中使用 LIKE '%' 运算符。用于字符串匹配。

      您的查询应该是这样的:

      SELECT * FROM table1
      WHERE string LIKE '%app%'
      

      由于你没有提到'app'应该放在字符串的开头还是结尾,我已经将字符串'app'包裹在两个'%'周围,这样它就会找到'app'字符串字符串中的任何位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-08
        • 1970-01-01
        • 2018-05-25
        • 2014-01-25
        • 1970-01-01
        • 2015-09-20
        相关资源
        最近更新 更多