select * from emp where tel is not null;并没有排除电话号码为空的数据
时间: 2024-01-07 11:34:43 浏览: 101
根据你提供的查询语句`SELECT * FROM emp WHERE tel IS NOT NULL;`,它应该只返回`tel`字段不为空的记录。如果这个查询没有排除电话号码为空的数据,可能是因为`tel`字段的数据类型不是字符串类型。
请确保`tel`字段的数据类型是字符串类型,例如`VARCHAR`或`CHAR`,而不是数字类型如`INT`或`TINYINT`。因为数字类型的字段即使值为0,在逻辑上也不会被视为`NULL`。
如果你确认了数据类型设置正确,但仍然无法排除电话号码为空的数据,请检查数据表的结构和数据是否与你的预期一致。也可以尝试使用其他方法来排除电话号码为空的数据,例如使用`LEN(tel) > 0`来检查电话号码的长度是否大于0。
以下是一个示例,使用`LEN()`函数来检查电话号码的长度是否大于0:
```sql
SELECT *
FROM emp
WHERE tel IS NOT NULL AND LEN(tel) > 0;
```
这个查询将同时检查`tel`字段不为空,并且其长度大于0,以确保排除电话号码为空的数据。请根据你的实际情况进行调整和测试。
相关问题
select deptno from dept where unique (select comm from emp where comm is not null);mysql支持吗
这个 SQL 语句有语法错误,应该修改为:
```
SELECT deptno FROM dept WHERE (SELECT COUNT(DISTINCT comm) FROM emp WHERE comm IS NOT NULL) = 1;
```
这个语句的作用是查询只有一个员工拥有非空 comm 值的部门号。至于 MySQL 是否支持,答案是支持的。
SELECT * FROM emp e left join (select * from b where b.age = 10) d where e.deptno=d.deptno;
这是一条 SQL 查询语句,它使用了左连接(left join)和子查询(subquery)。这条语句首先从 emp 表中选取所有的记录,然后将其与满足条件 b.age=10 的 b 表中的记录进行左连接,连接条件是 e.deptno=d.deptno。最终的结果集包含了 emp 表的所有记录以及与之匹配的 b 表中的记录,如果匹配不上则对应字段为 NULL。
阅读全文