Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql ';%@%表示什么';然后在CASE表达式中使用1 ELSE 2 END do_Sql_Sqlite - Fatal编程技术网

Sql ';%@%表示什么';然后在CASE表达式中使用1 ELSE 2 END do

Sql ';%@%表示什么';然后在CASE表达式中使用1 ELSE 2 END do,sql,sqlite,Sql,Sqlite,我不明白上面的语句中到底发生了什么,以及“@%”到底是什么,然后是1或2结束 String order = "CASE WHEN " + ContactsContract.Contacts.DISPLAY_NAME + " NOT LIKE '%@%' THEN 1 ELSE 2 END, " + ContactsContract.Contacts.DISPLAY_NAME

我不明白上面的语句中到底发生了什么,以及“@%”到底是什么,然后是1或2结束

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";

大小写类似于
if
语句,但可用于多种条件:

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

如果ContactsContract.Contacts.DISPLAY\u名称与“%@%”不同,则返回1 否则返回2

关于“%@%”,请执行以下操作: %表示此处可能有某些字符。
这意味着用户希望选择所有不包含“@”字符的字段,无论是在文本的开头、中间还是结尾。

CASE语句类似于IF语句,如果您希望避免使用许多“ELSE”,则更方便


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

也许您可以对“%@%”进行更多解释。请不要使用不相关的标记。这显然是一个SQL问题,而不是Jav或Android问题。谢谢@StephenC,我会在发帖时牢记在心。学习SQL:阅读,尤其是和。表示“不包含
@
字符”。如果说任何带有
@
字符的东西都是电子邮件地址,那就太夸张了。