【问题标题】:Android SQLite query string to reach to D in A~B~C~D~E~F where A,B,C,D,E and F could have any interested length and dataAndroid SQLite 查询字符串到达​​ A~B~C~D~E~F 中的 D,其中 A、B、C、D、E 和 F 可以有任何感兴趣的长度和数据
【发布时间】:2020-01-14 05:59:13
【问题描述】:

在 Android 应用程序中,
SQLite 数据库中,有一列包含以下数据:
A~B~C~D~E~F
其中 A、B、C、D、E 和 F 中的每一个都可以具有可变长度和数据

例如,
A 可能是所有可能感兴趣的名字,例如 Mike、Andy、Tom ......
或者 B 可以是任何感兴趣的国家名称等等

现在我需要一个查询来到达 D 部分,如何?
仅供参考,'~' character 在数据中是唯一的(“~”只有 5 个字符)
换句话说,A,B,C,D,E,F 不包含'~'

编辑: 我需要基本 SQLite 中的 LIKE 子句

【问题讨论】:

  • 这能回答你的问题吗? Split a string into rows using pure SQLite
  • @Marged,对不起,我不这么认为,我需要一个基本 SQLite 的 LIKE 子句来处理这样的问题
  • 不要尝试在单个列中存储多个内容。这些值中的每一个都应该在表中单独一行。
  • @Shawn,我对其进行了测试,发现如果每个项目单独放在自己的列中,数据库的大小会大得多,我不知道为什么,但它发生了

标签: android sqlite


【解决方案1】:

我实际上不知道仅使用基本 SQLite 字符串函数的方法。因此,我建议在您查询后从 Java 处理此问题:

String input = "A~B~C~D~E~F";
String[] parts = input.split("~");
String target = parts.length >= 4 ? parts[3] : "";

【讨论】:

    【解决方案2】:

    尤里卡!在基本 SQLite 中使用 LIKE 子句(NOT LIKE)是可能的:

              SELECT_QUERY =
                            String.format("SELECT * FROM %s WHERE %s NOT LIKE %s;",
                                    Constants.TABLE_M4,
                                    Constants.KEY_M4_Data,
                                    "%~%~%~~%'"
                            );
    

    如果D不为空,则用上述查询标识

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-23
      • 2012-01-27
      • 1970-01-01
      • 2016-12-06
      • 1970-01-01
      • 1970-01-01
      • 2018-03-28
      相关资源
      最近更新 更多