【问题标题】:What does the '%@%' THEN 1 ELSE 2 END do in the CASE expressionCASE 表达式中的 '%@%' THEN 1 ELSE 2 END 有什么作用
【发布时间】:2016-10-27 07:02:05
【问题描述】:

我不明白上述语句中到底发生了什么以及 '%@%' THEN 1 ELSE 2 END 到底是什么。

String order = "CASE WHEN "
                + ContactsContract.Contacts.DISPLAY_NAME
                + " NOT LIKE '%@%' THEN 1 ELSE 2 END, "
                + ContactsContract.Contacts.DISPLAY_NAME
                + ", "
                + ContactsContract.CommonDataKinds.Phone.NUMBER
                + " COLLATE NOCASE";

【问题讨论】:

标签: sql sqlite


【解决方案1】:

大小写类似于if 语句,但可以与多个条件一起使用:

在您的示例中,这意味着:

如果 ContactsContract.Contacts.DISPLAY_NAME 不喜欢 '%@%' THEN 返回 1 否则返回 2

关于“%@%”: % 表示这个地方可以有某些字符。 这意味着用户想要选择所有不包含'@'字符的字段,无论是在文本的开头、中间还是结尾。

【讨论】:

  • 也许你可以在'%@%'得到更多解释
【解决方案2】:

CASE 语句就像一个 IF 语句,如果你想避免有很多“ELSE”,它会更方便。

% 字符是 SQLite 中的通配符。因此,NOT LIKE '%@%' 表示不包含“@”字符(例如电子邮件地址)。

【讨论】:

  • 表示“不包含@ 字符”。说任何带有 @ 字符的东西都是 电子邮件地址 有点牵强。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 2020-12-04
  • 1970-01-01
  • 2011-05-22
  • 2012-02-18
  • 1970-01-01
相关资源
最近更新 更多