【问题标题】:SELECT using Reverse-LIKE from database [closed]使用数据库中的 Reverse-LIKE 选择 [关闭]
【发布时间】:2017-07-20 18:46:14
【问题描述】:

我想用通配符存储数据,例如,

  • “我是 %,需要你的帮助”

  • “谢谢 %”

稍后,我想使用类似的字符串从中检索数据,

  • “我是 Pruthvesh Pipaliya,需要你的帮助”

  • “谢谢X先生”

有没有办法在 SQLite 中做到这一点? 如果不在 SQLite 中,他们有什么方法可以使用任何其他数据库或任何其他技术?

【问题讨论】:

    标签: c# sql asp.net sqlite


    【解决方案1】:

    我会在您的应用层而不是数据层进行替换。你已经用 asp.net 和 sql 标记了这个问题,所以类似于:

    SELECT * FROM myTable WHERE messageId = 4
    

    获取消息模板

    我还将您的通配符更改为 .net 字符串替换格式。因此,例如,在数据库中存储为:

    "Thanks {0}."
    

    而不是

    "Thanks %."
    

    然后在应用程序中类似:

    var salutationTemplate = >> record from db <<
    var salutation = string.Format(salutationTemplate, "Name to replace");
    

    这会将 {0}(您也可以使用 {1}、{2} 等)替换为后面的值。

    【讨论】:

      【解决方案2】:

      LIKE 运算符希望左侧有一个字符串,右侧有一个模式。所以给它:

      SELECT *
      FROM MyTable
      WHERE 'Thanks Mr. X' LIKE MyColumn;
      

      【讨论】:

      【解决方案3】:

      AFAIK 你必须将完整的记录(列)存储在数据库中。然后你可以使用java(例如)创建如下准备好的语句。

      String query = "SELECT ... FROM ... WHERE ..."+ //
      "AND UPPER(INTRODUCTION) LIKE UPPER(?)";
      PreparedStatement pstmt = conn.prepareStatement(query);
      stmt.setString(1, "I am %, want your help%");
      

      此外,如果您尝试创建通用电子邮件,则可以使用模板机制。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-04
        • 2013-11-28
        • 1970-01-01
        相关资源
        最近更新 更多