作业需求:查询邮箱以.com结尾的客户信息(SQL语句纠错)
排查你的SQL查询问题
嘿,我一眼就看到你这条SQL语句里的两个关键错误,这也是新手常踩的坑,咱们一步步来修正:
错误点分析
- 列选择的语法错误:
SELECT first_name AND last_name这里用了AND完全不对,AND是用来连接逻辑条件的,要选择多个列的话,应该用逗号分隔,比如first_name, last_name。如果你的作业要求是获取所有客户信息,那直接用SELECT *会更方便,不用逐个列名写。 - LIKE匹配的写法错误:
WHERE email LIKE('.com')有两个问题:一是LIKE后面不需要加括号,直接跟匹配字符串;二是要匹配后缀为.com的邮箱,必须用通配符%,它表示“任意长度的任意字符”,所以正确的匹配应该是email LIKE '%.com'——这个%会匹配邮箱@符号到.com之前的所有内容,刚好满足后缀匹配的需求。
正确的SQL语句
如果你需要获取所有客户信息(符合作业要求),应该这么写:
SELECT * FROM customerform WHERE email LIKE '%.com';
如果你只需要名字信息,那可以写成:
SELECT first_name, last_name FROM customerform WHERE email LIKE '%.com';
额外小提示
如果要更严谨地匹配(避免比如.com.cn这种后缀也被误匹配),可以用RIGHT()函数精准匹配最后4个字符:
SELECT * FROM customerform WHERE RIGHT(email, 4) = '.com';
不过这个要注意邮箱的大小写问题,如果你的数据库区分大小写,可能需要转成统一大小写再匹配,比如LOWER(RIGHT(email, 4)) = '.com'。
内容的提问来源于stack exchange,提问作者joe
相关产品推荐
相关产品推荐

