sql , select的结果不完整 100
有一个数据表,大约有60万条记录。select*fromtablewhereartisNULL我用这个语句查询后,只能得到很小的一部分记录返回。可实际的情况是60万记录中...
有一个数据表,大约有60万条记录。
select * from table where art is NULL 我用这个语句查询后,只能得到很小的一部分记录返回。可实际的情况是60万记录中art字段大部分是NULL。 也就是得到的结果不完整。 不知道这个会是什么原因呢。大神们帮忙分析下
ps. 我用的是mysql
大神们, sql写法肯定没问题的。 不存在空字符等问题,就是NULL, 这点基础我还是知道的。 可就是查询不完整。art字段的类型,我定义为text
表table:
id art name
1 NULL 张三
2 NULL 李四
.....
就是这样一个表,本身有60多万条记录(会不会是表太大了,引起什么异常)
如果是 select * from table where art is NULL 只能查找到一部分
但用 select * from table where id=‘某个值’ and art is NULL 却能查出上面那个SQL没查到的记录。真怪
select count(*) from table where art is NULL 返回14
select count(*) from table where art is not NULL 返回22494
select count(*) from table where art like '%NULL%' 返回0
select count(*) from table where art='' 返回0 展开
select * from table where art is NULL 我用这个语句查询后,只能得到很小的一部分记录返回。可实际的情况是60万记录中art字段大部分是NULL。 也就是得到的结果不完整。 不知道这个会是什么原因呢。大神们帮忙分析下
ps. 我用的是mysql
大神们, sql写法肯定没问题的。 不存在空字符等问题,就是NULL, 这点基础我还是知道的。 可就是查询不完整。art字段的类型,我定义为text
表table:
id art name
1 NULL 张三
2 NULL 李四
.....
就是这样一个表,本身有60多万条记录(会不会是表太大了,引起什么异常)
如果是 select * from table where art is NULL 只能查找到一部分
但用 select * from table where id=‘某个值’ and art is NULL 却能查出上面那个SQL没查到的记录。真怪
select count(*) from table where art is NULL 返回14
select count(*) from table where art is not NULL 返回22494
select count(*) from table where art like '%NULL%' 返回0
select count(*) from table where art='' 返回0 展开
8个回答
展开全部
1. 确定好你art的字段类型.是不是字符串的形式
select * from table where id=‘某个值’ and art is NULL 通过这个语句分析,你的库中,art这个字段存的值有空的情况.要注意空和null是有区别的.空不等于null.
是否有人在程序中插入了'NULL'?所以在数据库中显示null?
select * from table where art is NULL 我用这个语句查询后,只能得到很小的一部分记录返回
根据你说的这个可以知道:你数据库中还存在null的情况.
你可以用art is not null 看看数据有多少?
然后用length() 看下art字段中数据长度.
-------------------------------------------------------------------------------------------------------------------
你用的是什么工具查询的数据?
-------------------------------------------------------------------------------------------------------------------
select count(*) from table where art is NULL 返回14
select count(*) from table where art is not NULL 返回22494
很明显.你art这个字段里里肯定有很多不可见的字符~用length() 看下art字段中is not null 数据长度.
select * from table where id=‘某个值’ and art is NULL 通过这个语句分析,你的库中,art这个字段存的值有空的情况.要注意空和null是有区别的.空不等于null.
是否有人在程序中插入了'NULL'?所以在数据库中显示null?
select * from table where art is NULL 我用这个语句查询后,只能得到很小的一部分记录返回
根据你说的这个可以知道:你数据库中还存在null的情况.
你可以用art is not null 看看数据有多少?
然后用length() 看下art字段中数据长度.
-------------------------------------------------------------------------------------------------------------------
你用的是什么工具查询的数据?
-------------------------------------------------------------------------------------------------------------------
select count(*) from table where art is NULL 返回14
select count(*) from table where art is not NULL 返回22494
很明显.你art这个字段里里肯定有很多不可见的字符~用length() 看下art字段中is not null 数据长度.
展开全部
有一种可能,就是那个字段不是null是空字符串
你加上这个条件再查一下
----------------
使用plsql吗?
如果使用plsql来查询的话,会显示一部分,点击向下的那个箭头才能显示全部
你加上这个条件再查一下
----------------
使用plsql吗?
如果使用plsql来查询的话,会显示一部分,点击向下的那个箭头才能显示全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你先看看art字段定义是不是varchar.如果是的话,就有这么几种情况。
1.表里面这个字段的内容是空白
这个时候可能是NULL或者空字符串
2.表里面这个字段的内容是【NULL】
这个时候就可以判断是为‘NULL’
综合上面两点,SQL文可以这么写
select * from table where art in (NULL, ", 'NULL')
和【家有一只羊】的SQL文差不多
1.表里面这个字段的内容是空白
这个时候可能是NULL或者空字符串
2.表里面这个字段的内容是【NULL】
这个时候就可以判断是为‘NULL’
综合上面两点,SQL文可以这么写
select * from table where art in (NULL, ", 'NULL')
和【家有一只羊】的SQL文差不多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那有可能art的值是null或者字符'null'
你先select count(*) from table where art is NULL
然后看下select count(*) from table where art is not null
再看一下select count(*) from table where art like '%NULL%'
---------------------------------------------------------------------------
确实很奇怪,select * from table where id=‘某个值’ and art is NULL这里查到的是
select * from table where art is NULL中不包含的?
那select * from table where id='某个值' and art is not NULL呢?
你先select count(*) from table where art is NULL
然后看下select count(*) from table where art is not null
再看一下select count(*) from table where art like '%NULL%'
---------------------------------------------------------------------------
确实很奇怪,select * from table where id=‘某个值’ and art is NULL这里查到的是
select * from table where art is NULL中不包含的?
那select * from table where id='某个值' and art is not NULL呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
肯能你看到的那些Null值,是插入语句时插入的“null”这个值,所以你查询是只查询出插入时,没有插入该值得这些记录,而插入为“null”值得并没有查询到。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询